正则表达式变音符号问题

发布于 2024-11-03 10:40:27 字数 260 浏览 4 评论 0原文

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

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

谢谢你!

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情绪操控生活 2024-11-10 10:40:27

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

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

在你的情况下:

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

应该有效。

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

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:

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

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文