Экранирование кодовой точки Unicode в литералах регулярных выражений - Javascript

Может ли этот литеральный синтаксис регулярного выражения иметь синтаксис управляющей последовательности Unicode,

var regpat= /^[\u0041-\u005A\u0061-\u007A\.\' \-]{2,15}/;

быть записаны с использованием синтаксиса экранирования кодовой точки Unicode (как показано ниже)?

var regpat= /^[\u{41}-\u{5A}\u{61}-\u{7A}\u{1F4A9}\.\' \-]{2,15}/;

Примечание. Экранирование кодовых точек Unicode используется для упрощения совместимого с ES5 синтаксиса суррогатных пар, представляющих значение кодовой точки больше FFFF


person overexchange    schedule 21.12.2015    source источник
comment
return "????".match(/\u{1d306}/u)[0].length === 2; для проверки поддержки   -  person Dean Taylor    schedule 21.12.2015


Ответы (1)


Да, согласно спецификации теперь это допустимая escape-последовательность, однако для включения поддержки необходимо включить новый флаг u в определение регулярного выражения:

var regpat = /^[\u{41}-\u{5A}\u{61}-\u{7A}\u{1F4A9}\.\' \-]{2,15}/u;
console.log(regpat.test("\u{41}\u{61}}"))

Вавилонский REPL

person CodingIntrigue    schedule 21.12.2015
comment
SyntaxError: invalid regular expression flag u в firefox 45.0a2 и chrome 47.0 - person overexchange; 21.12.2015
comment
@overexchange Вы можете проверить статус реализации браузера здесь. Babel транспилирует регулярные выражения, так что это, вероятно, единственный возможный вариант прямо сейчас. - person CodingIntrigue; 21.12.2015
comment
Обратите внимание, что транспилированные регулярные выражения могут работать некорректно, когда вы имеете дело с одиночными суррогатами. - person nhahtdh; 21.12.2015
comment
Обратите внимание, что синтаксис \u{XXX}, похоже, не поддерживается в IE11 (хотя в Edge все в порядке) - person Dmitry Pashkevich; 14.09.2018