SyntaxError: отрицательный класс символов со строками в регулярном выражении
Исключение JavaScript "negated character class with strings in regular expression" возникает, когда v-режим класса символов отрицается и может соответствовать строке (более чем одному символу).
Сообщение
SyntaxError: Invalid regular expression: /[^\p{RGI_Emoji_Flag_Sequence}]/v: Negated character class may contain strings (V8-based)
SyntaxError: negated character class with strings in regular expression (Firefox)
SyntaxError: Invalid regular expression: negated class set may contain strings (Safari)
Тип ошибки
Что пошло не так?
В режиме v классы символов могут соответствовать более чем 1 символу. Например, /[\q{abc}]/v будет соответствовать последовательности "abc", а /[\p{RGI_Emoji_Flag_Sequence}]/v будет соответствовать любой последовательности символов, представляющей флаг эмодзи. Однако отрицательные классы символов [^...] не могут соответствовать строкам, поэтому /[^\p{RGI_Emoji_Flag_Sequence}]/v недействителен, поскольку неясно, скольким символам он должен соответствовать. Для получения дополнительной информации см. справочное руководство по классу символов в режиме v.
Примеры
Недействительные случаи
/[^\p{RGI_Emoji_Flag_Sequence}]/v;
Действительные случаи
// Matches two characters that are not an emoji flag sequence
/(?!\p{RGI_Emoji_Flag_Sequence})../v;
См. также
- Регулярные выражения
- Класс символов:
[...],[^...] - Экранирование класса символов Unicode:
\p{...},\P{...}
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Regex_negated_char_class_with_strings