正则表达式变音符号问题
我正在尝试验证一些用户输入,但我的正则表达式在遇到变音符号时失败。我说的是诸如 ăĂ
之类的字符。
我应该在正则表达式代码中添加什么,以便它还应该验证输入中的变音符号?
谢谢你!
PS:如果重要的话,我正在使用 PHP 和 CakePHP 框架。
这是我当前用于验证用户输入的代码片段: return preg_match('|^[0-9a-zA-Z_-\s]*$|', $value);
I am trying to validate some user inputs, but my regex fails when it encounters diacritics. I am talking about characters like ăĂ
and so on.
What should I add to the regex code so it should also validate diacritics from within inputs?
Thank you!
P.S.: If it matters, I am using PHP with CakePHP framework.
This is the piece of code I am currently using for validating user input: return preg_match('|^[0-9a-zA-Z_-\s]*$|', $value);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
假设您想要匹配字母,那么允许 Unicode 字母应该会有所帮助:
例如,如果您想要匹配字母序列,请使用
/\p{L}+/u
。不要忘记/u
(Unicode) 修饰符。在你的情况下:
应该有效。
顺便说一句,使用
|
作为正则表达式分隔符可能不是一个好主意。对于当前的正则表达式/
就可以了;其他替代方案是~
或#
因为它们很少出现在文本中,并且在正则表达式中没有任何特殊含义。Assuming you want to match letters, then allowing Unicode letters should help:
Use
/\p{L}+/u
for example if you want to match a sequence of letters. Don't forget the/u
(Unicode) modifier.In your case:
should work.
As an aside, it's probably not a good idea to use
|
as a regex delimiter. For the current regex/
would do just fine; other alternatives are~
or#
because they seldom occur in text and don't have any special meaning in regexes.