0

我想创建一个正则表达式来验证客户姓名。

这将是一个像 Peter、André、Mary-Anne 或 Van Rensberg 这样的名字。不应允许使用亚洲字符以及与此方式名称无关的其他字符。

这将通过 HTML5 模式属性进行验证,然后再次通过 PHP 作为最后的手段。

我最初是从这个开始的:[^\p{L}\s0-9]{1,120}这几乎适用于我的想法,但与我想要完成的事情并不完全相关。

它基本上允许像 c 或 é 或 - 这样的字符,但不允许空格,并且作为副作用允许输入其他特殊字符,如 / 和 %。

鉴于我对这个主题的了解非常有限,我想我会问这个问题,以便从一些比我了解更多的人那里获得一些知识。

感谢您在这方面的任何反馈建议!

4

2 回答 2

3

你应该从:

/^([\p{Letter}\p{Latin}]+(\-[\p{Letter}\p{Latin}]+|[\x20\xA0\x{0020}\x{00A0}])?)+$/

如果需要,您可以添加其他脚本,例如:

\p{Hebrew}, \p{Cyrillic}, \p{Georgian}, \p{Greek}

有关更多信息,请查看“ Unicode 正则表达式”。

我建议您在正则表达式验证之前修剪前导/尾随空白字符

于 2012-06-25T13:07:13.303 回答
1

如果要验证名称是否为名称,则应尝试验证该名称是否不是仅包含空格的无效字符串或长度非常短的字符串。如果您期望正则表达式来验证名称,也许这应该有效

/(^|\s)[A-Za-z\-áéíóúÁÉÍÓÚ]+($|\s)/i

但我坚持认为,您可以做的更好的事情是确保名称不是无效字符串,因为有很多名字和姓氏,有很多形状

于 2012-06-25T13:24:09.480 回答