Le parentesi graffe nella regex JavaScript vengono utilizzate per indicare i quantificatori. Quindi scrivereLa gestione delle parentesi graffe in regex javascript è la stessa in tutti i browser moderni?
a{2,4}
corrisponderà aa, aaa e aaaa. Ma se si digitano questo quantifier come questo:
x{1,x}
Sarà corrispondere al testo letterale "x {1, x}", almeno in Firefox.
Questo comportamento è comune ai browser moderni?
Lo standard ECMA vieta questo comportamento e richiede l'escaping delle parentesi.
(Background: devo scrivere un parser per javascript regex sul posto di lavoro.)
Eww ... Nizza bug! Succede quando invochi 'new RegExp()', '//' o entrambi? – fge
Dove dice il requisito dell'evasione dalle specifiche? La defizione rilevante di 'QuantifierPrefix' è' {DecimalDigits, DecimalDigits} ', quindi' {1, x} 'non deve essere interpretato come quantificatore perché' x' non è un 'DecimalDigit' - quindi il comportamento sembra coerente con le specifiche . – pimvdb
'PatternCharacter è SourceCharacter ma non uno di ^ $ \. * +? ( ) [] {} | 'Quindi le parentesi graffe non possono essere un carattere di motivo. – Calmarius