我正在尝试验证一些用户输入,但我的正则表达式在遇到变音符号时失败。我说的是ăĂ
之类的字符,等等。
我应该在正则表达式代码中添加什么,以便它还应该从输入中验证变音符号?
谢谢!
P.S。:如果重要的话,我正在使用PHP和CakePHP框架。
这是我目前用于验证用户输入的一段代码:return preg_match('|^[0-9a-zA-Z_-\s]*$|', $value);
答案 0 :(得分:6)
假设你想匹配字母,那么允许使用Unicode字母应该有所帮助:
例如,如果要匹配一系列字母,请使用/\p{L}+/u
。不要忘记/u
(Unicode)修饰符。
在你的情况下:
return preg_match('|^[0-9\p{L}_\s-]*$|u', $value);
应该有用。
顺便说一下,使用|
作为正则表达式分隔符可能不是一个好主意。对于当前的正则表达式/
会做得很好;其他替代方案是~
或#
,因为它们很少出现在文本中,并且在正则表达式中没有任何特殊含义。