Regex modifier /u in JavaScript?

2022-08-30 21:09:54

最近,我为我的PHP代码创建了一个正则表达式,它只允许字母(包括特殊字符加空格),但现在我遇到了一个问题,需要将其(?)转换为与JavaScript兼容的正则表达式,这里是:,问题是正则表达式模式末尾的修饰符,因为JavaScript不允许这样的标志。/^[\s\p{L}]+$/u/u

我该如何重写它,这样它也可以在JavaScript中工作?

有没有一些东西只允许波兰语字符:,,,...ŁĄ,ŚĆ


答案 1

该修饰符用于 unicode 支持。对它的支持已添加到ES2015的JavaScript中。/u

阅读 http://stackoverflow.com/questions/280712/javascript-unicode 以了解有关使用JavaScript的正则表达式中的unicode的更多信息。


波兰语字符:

Ą \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 字符串的概念,所以你不太可能需要这个标志。(你的字符串可能已经是通常的JavaScript形式,每个“字符”一个UTF-16代码单元。/u

更大的问题是JavaScript不支持,也没有任何等效的符号;JavaScript 正则表达式对 Unicode 字符属性一无所知。请参阅此StackOverflow问题的答案,了解近似它的一些方法。\p{L}


编辑以添加:如果您只需要支持波兰语字母,那么您可以写.和 部分覆盖 ASCII 字母,然后分别列出其余字母。/^[\sa-zA-ZĄĆĘŁŃÓŚŹŻąćęłńóśźż]+$/a-zA-Z