Las llaves en JavaScript regex se utilizan para denotar cuantificadores. Así que escribiendo¿El manejo de llaves en javascript regex es el mismo en todos los navegadores modernos?
a{2,4}
coincidirá con aa, aaa y aaaa. Pero si se escribe incorrectamente este cuantificador como esto:
x{1,x}
que coincidirá con el texto literal "x {1, x}", al menos en Firefox.
¿Este comportamiento es común en los navegadores modernos?
La norma ECMA prohíbe este comportamiento y requiere el escape de las llaves.
(Antecedentes: Tengo que escribir un analizador de expresiones regulares de JavaScript en el trabajo.)
Eww ... Niza de errores! ¿Sucede cuando invocas 'nuevo RegExp()', '//' o ambos? – fge
¿Dónde dice sobre el requisito de escaparse en la especificación? La defición relevante de 'QuantifierPrefix' es' {DecimalDigits, DecimalDigits} ', así que' {1, x} 'no debe interpretarse como un cuantificador porque' x' no es 'DecimalDigit' - por lo tanto, el comportamiento parece consistente con las especificaciones . – pimvdb
'PatternCharacter es SourceCharacter pero no uno de ^ $ \. * +? ( ) [] {} | 'Así que las llaves no pueden ser un carácter de patrón. – Calmarius