Модификатор regex/u в JavaScript?
Недавно я создал регулярное выражение для моего PHP-кода, который позволяет использовать только буквы (включая специальные символы плюс пробелы), но теперь у меня возникла проблема с преобразованием его (?) в регулярное выражение, совместимое с JavaScript.: /^[\s\p{L}]+$/u
, проблема заключается в модификаторе /u
в конце шаблона регулярного выражения, так как JavaScript не разрешает такой флаг.
Как я могу переписать это, так что он будет работать и в JavaScript?
Есть ли что-то, чтобы разрешить только польские символы: Ł
, Ą,
Ś
, Ć
,...
Ответы
Ответ 1
Модификатор /u
предназначен для поддержки юникода.
Поддержка была добавлена в JavaScript в ES2015.
Прочитайте fooobar.com/questions/9626/..., чтобы узнать больше информации о юникоде в регулярных выражениях с JavaScript.
Польские символы:
Ą \u0104
Ć \u0106
Ę \u0118
Ł \u0141
Ń \u0143
Ó \u00D3
Ś \u015A
Ź \u0179
Ż \u017B
ą \u0105
ć \u0107
ę \u0119
ł \u0142
ń \u0144
ó \u00F3
ś \u015B
ź \u017A
ż \u017C
Все специальные польские символы:
[\u0104\u0106\u0118\u0141\u0143\u00D3\u015A\u0179\u017B\u0105\u0107\u0119\u0142\u0144\u00F3\u015B\u017A\u017C]
Ответ 2
В JavaScript нет понятия строк UTF-8, поэтому вам вряд ли понадобится флаг /u
. (Ваши строки, вероятно, уже находятся в обычной форме JavaScript, один код UTF-16 для каждого символа.)
Большая проблема заключается в том, что JavaScript не поддерживает \p{L}
или любую эквивалентную нотацию; JavaScript-регулярные выражения не имеют представления о свойствах символов Unicode. См. Ответы на fooobar.com/questions/48918/... для некоторых способов его приближения.
Отредактировано для добавления: Если вам нужно поддерживать только польские буквы, вы можете написать /^[\sa-zA-ZĄĆĘŁŃÓŚŹŻąćęłńóśźż]+$/
. Части a-z
и a-z
покрывают буквы ASCII, а остальные буквы перечислены отдельно.
Ответ 3
Начиная с ES2015,/u поддерживается в JavaScript. Увидеть: