19

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

我怎样才能重写它,所以它也可以在 JavaScript 中工作?

有什么东西只允许波兰语字符:Ł, Ą, Ś, Ć, ...

4

3 回答 3

20

/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]
于 2012-10-15T13:59:07.807 回答
5

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

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


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

于 2012-10-15T13:54:45.033 回答