我需要输入验证,良好的输入验证来保持一切干净。所以我想要一个关于“全名”的严格正则表达式,国际化所以我需要 Unicode 支持。我下载了 XRegExp,它将“它们的格式”编译为正则表达式并支持 Unicode:
正确名称:
- 约翰·埃尔克杰德
- 安德烈·斯文森
- 马可·达尔梅达
- 克里斯托弗·拉库尔
名称不正确:
- 汉斯
- H4nn3 安徒生
- 马丁·亨里克森!
所以我需要:
- 匹配 unicode 字母 (a, æ)
- 匹配 unicode 重音符号(á、Ë 等)
- 匹配 unicode 连字符(- _ 等)
在 PHP 中我可以执行以下操作来匹配:
\p{L} (unicode letter)
\p{Mn} (unicode accents)
\p{Pd} (unicode hyphens)
我发现我可以用 XRegExp 来做:
^\p{L}+$ 将匹配“日本”,因此只有第一个字母有效,但我如何才能弄清楚如何执行这些 unicode 重音符号、连字符?
感谢您的帮助。
最佳答案
看起来 @lanzz 给了您一些关于名称验证潜在问题的良好反馈,但为了记录,您可以使用您在 XRegExp 中提到的 Unicode 类别,就像使用 PHP 一样。例如,XRegExp('^[\\p{L}\\p{Mn}\\p{Pd} ]+$')
。这需要 XRegExp 的 Unicode 类别插件。请注意,由于 JavaScript 字符串文字转义规则,反斜杠被转义。
关于Javascript Node.js Unicode 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12800517/