Модификатор 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, а остальные буквы перечислены отдельно.