正则表达式变音符问题

lin*_*ndy 1 php regex cakephp diacritics

我试图验证一些用户输入,但我的正则表达式遇到变音符号时失败.我在谈论角色??等等.

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

谢谢!

PS:如果重要,我使用PHP和CakePHP框架.

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

Tim*_*ker 6

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

使用/\p{L}+/u,如果你想匹配的字母序列为例.不要忘记/u(Unicode)修饰符.

在你的情况下:

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

应该管用.

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