Tengo una cadena que puede tener una de las 2 estructuras siguientes
(\w+){1}([!][a-zA-Z0-9>,]+)*([#]\d+)? (\w+){1}([#]\d+)?([!][a-zA-Z0-9>,]+)*algunos ejemplos serían
"Abc1!deF2>Ghi3,4jlmNO!pQr5st#1400" "Abc1#1400!deF2>Ghi3,4jlmNO!pQr5st"El objetivo es hacer coincidir lo siguiente
["Abc1", "!deF2>Ghi3,4jlmNO", "!pQr5st", "#1400"] ["Abc1", "#1400", "!deF2>Ghi3,4jlmNO", "!pQr5st"]Puedo lograr obtener el resultado con 3 expresiones regulares, pero no con 1
const a = str.match(/\w+/) const b = str.match(/([!][a-zA-Z0-9>,]+)/g) const c = str.match(/[#]\d+/)¿Cómo puedo obtener el resultado esperado con una sola expresión regular?
Tal vez use | para separar posibles coincidencias:
const regExp = /\w+|![a-zA-Z0-9>,]+|#\d+/g; console.log("Abc1!deF2>Ghi3,4jlmNO!pQr5st#1400".match(regExp)); console.log("Abc1#1400!deF2>Ghi3,4jlmNO!pQr5st".match(regExp)); También tenga en cuenta que (\w+){1} es equivalente a \w+ , y [!] y [#] son lo mismo que ! y # respectivamente.