> Le 3 juin 2016 à 10:20, Isiah Meadows <[email protected]> a écrit :
> 
> These three RegExps don't appear valid, even after reading the Annex B, but 
> they do behave consistently in both Chrome and Firefox. They are listed here 
> with equivalent regexps:
> 
> - `/[[]/` -> `/\[\[\]/`
> - `/[]]/` -> `/(?!)/` (i.e. nothing)
> - `/a{,,/` -> `/a\{,,+/`
> 
> Is this a spec bug or an implementation bug in the parsing? 

The first pattern is conform to the syntax and semantics given in the main part 
of the spec. The most relevant rule in the grammar of 
https://tc39.github.io/ecma262/#sec-regular-expressions-patterns is:

    ClassAtomNoDash ::
        SourceCharacter  but not one of \ or ] or -
    
In particular an unescaped `[` is an acceptable atom inside a character class.

The last two ones are well specified by main part modified with annex b. The 
second pattern starts with an empty class, which is a valid way to not match 
anything. And the most relevant rule in Annex B grammar in 
https://tc39.github.io/ecma262/#sec-regular-expressions-patterns is:

    ExtendedPatternCharacter::
        SourceCharacter  but not one of  ^  $  .  *  +  ?  (  )  [  |

In particular, `]` and `{` may appear unescaped outside character class (with 
the restriction that `{` is not at the start of a sequence that resemble a 
quantifier, which case is taken care by the `InvalidBracedQuantifier` 
production).

—Claude
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to