在JS中工作的正则表达式不适用于PHP

时间:2014-03-25 10:58:17

标签: javascript php regex

这个正则表达式:

/^admin$|^[А-Яа-я]{2,20}\s[А-Яа-я]{2,20}\s[А-Яа-я]{2,20}$/

应匹配此字符串:

Пупкин Василий Иванович

它与JS匹配(在Firebug控制台中测试)并且在PHP中没有,我无法理解为什么。

2 个答案:

答案 0 :(得分:3)

在JavaScript中,字符串始终为UTF-8。但是,在PHP中,它们是一个字节序列。为了允许PHP的正则表达式引擎处理UTF-8字符串,请将u修饰符添加到正则表达式。

您还可以通过删除所有大写字母范围并使用i修饰符来简化正则表达式,但这可能与语言环境有关,因此请务必对其进行测试!

有关修饰符的更多信息,请查看docs

答案 1 :(得分:0)

您可能想要使用:

\p{Cyrillic}

阅读Unicode character properties了解详情。