Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is handling of curly braces in javascript regex is the same across all modern browsers?

Curly braces in JavaScript regex is used to denote quantifiers. So writing

a{2,4}

will match aa, aaa and aaaa. But if you mistype this quantifier like this:

x{1,x}

It will match the literal text "x{1,x}", at least in Firefox.

Is this behavior common to modern browsers?

The ECMA standard prohibits this behavior and requires the escaping of the braces.

(Background: I have to write a parser for javascript regexes at work.)

like image 362
Calmarius Avatar asked Dec 20 '11 11:12

Calmarius


1 Answers

I don't know for JavaScript and browsers, but this is the behaviour I would have expected and that I have seen in the past in regular expressions.

So I tested different regex engines on their behaviour:

  • C#: behaves this way

  • Perl: behaves this way

  • Python: behaves this way

  • PHP: behaves this way

  • Java: throws an Exception

like image 137
stema Avatar answered Sep 29 '22 00:09

stema