正则表达式变音符问题

时间:2011-04-26 16:42:27

标签: php regex cakephp diacritics

我正在尝试验证一些用户输入,但我的正则表达式在遇到变音符号时失败。我说的是ăĂ之类的字符,等等。

我应该在正则表达式代码中添加什么,以便它还应该从输入中验证变音符号?

谢谢!

P.S。:如果重要的话,我正在使用PHP和CakePHP框架。

这是我目前用于验证用户输入的一段代码:return preg_match('|^[0-9a-zA-Z_-\s]*$|', $value);

1 个答案:

答案 0 :(得分:6)

假设你想匹配字母,那么允许使用Unicode字母应该有所帮助:

例如,如果要匹配一系列字母,请使用/\p{L}+/u。不要忘记/u(Unicode)修饰符。

在你的情况下:

return preg_match('|^[0-9\p{L}_\s-]*$|u', $value);

应该有用。

顺便说一下,使用|作为正则表达式分隔符可能不是一个好主意。对于当前的正则表达式/会做得很好;其他替代方案是~#,因为它们很少出现在文本中,并且在正则表达式中没有任何特殊含义。