Tengo el siguiente código REGEX, es decir:
/^IT [0-9]{1,5}/(?<y1>19)?(?(y1)\d{2}|20\d{2})\((?<n1>M)?(?(n1)N|[H|B|C|D|E|G|K|M|U|N|L|S|T|V])\)$/
Está destinado a verificar un grupo de palabras y asegurarse de que se evalúe como:
IT 1/2014(G)
o cualquier valor de hasta 5 dígitos
IT 5000/2014(MN)
Sin embargo, sigo recibiendo el siguiente error cuando ejecuto lo anterior en Firefox:
Uncaught SyntaxError: invalid regexp group
Cualquier ayuda en absoluto sería muy apreciada.
El patrón contiene una cláusula if que no se admite.
(?<y1>19)?(?(y1)\d{2}|20\d{2}) Si existe el grupo y1 , haga coincidir 19 y 2 dígitos, de lo contrario haga coincidir 20 y 2 dígitos.
Eso se puede escribir como (?:19|20)\d{2}
Lo mismo va para
(?<n1>M)?(?(n1)N|[H|B|C|D|E|G|K|M|U|N|L|S|T|V]) Si existe el grupo n1 , haga coincidir MN ; de lo contrario, haga coincidir uno de los enumerados en la clase de caracteres.
Eso se puede escribir como (?:MN|[HB-EGKMUNLSTV])
El patrón completo podría verse así:
^IT [0-9]{1,5}\/(?:19|20)\d{2}\((?:MN|[HB-EGKMUNLSTV])\)