2

我需要输入验证,良好的输入验证以保持一切清洁。所以我想要一个严格的“全名”正则表达式,国际所以我需要Unicode支持。我下载了 XRegExp,它将“它们的格式”编译为正则表达式并支持 Unicode:

正确名称:

  • 约翰·埃尔克杰德
  • 安德烈·斯文森
  • 马尔科·达尔梅达
  • 克里斯托弗拉库尔

不正确的名字:

  • 汉斯
  • H4nn3 安徒生
  • 马丁亨里克森!

所以我需要:

  1. 匹配 unicode 字母 (a, æ)
  2. 匹配 unicode 重音符号(á、Ë 等)
  3. 匹配 unicode 连字符(- _ 等)

在 PHP 中,我可以执行以下操作来匹配:

\p{L} (unicode letter)
\p{Mn} (unicode accents)
\p{Pd} (unicode hyphens)

我发现,我可以用 XRegExp 做:

^\p{L}+$ 将匹配“日本”,因此只有第一个字母有效,但我怎样才能弄清楚如何处理这些 un​​icode 重音符号,连字符?

感谢帮助。

4

1 回答 1

2

看起来@lanzz 为您提供了一些关于名称验证潜在问题的良好反馈,但作为记录,您可以像使用 PHP 一样使用您在 XRegExp 中提到的 Unicode 类别。例如,XRegExp('^[\\p{L}\\p{Mn}\\p{Pd} ]+$')。这需要 XRegExp 的 Unicode 类别插件。请注意,由于 JavaScript 字符串文字转义规则,反斜杠被转义。

于 2012-10-25T17:38:53.233 回答