JavaScript中的正则表达式修饰符/ u?

时间:2012-10-15 13:47:27

标签: php javascript regex unicode

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

我怎样才能重写这个,所以它也适用于JavaScript?

是否只允许使用波兰语字符:ŁĄ, ŚĆ,...

3 个答案:

答案 0 :(得分:16)

/u修饰符适用于 unicode 支持。 ES2015中的 JavaScript 添加了对它的支持。

阅读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]

答案 1 :(得分:3)

JavaScript没有任何UTF-8字符串的概念,因此您不太可能需要/u标志。 (你的字符串可能已经是通常的JavaScript形式,每个“字符”一个UTF-16代码单元。)

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


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

答案 2 :(得分:1)