https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102447

--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> ---
Actually, this might not be a bug.

We have this comment in regex_compiler.tcc

      // POSIX doesn't allow '-' as a start-range char (say [a-z--0]),
      // except when the '-' is the first or last character in the bracket
      // expression ([--0]). ECMAScript treats all '-' after a range as a
      // normal character. Also see above, where _M_expression_term gets
called.
      //
      // As a result, POSIX rejects [-----], but ECMAScript doesn't.
      // Boost (1.57.0) always uses POSIX style even in its ECMAScript syntax.
      // Clang (3.5) always uses ECMAScript style even in its POSIX syntax.
      //
      // It turns out that no one reads BNFs ;)


So [\w-a] is valid for the ECMAScript syntax and is equivalent to POSIX
[-_[:alnum:]].

You can confirm this using your browser's javascript console, where this will
print true:

RegExp('[\\w-a]').test('-')

Reply via email to