PHP+HTML - 正则表达式来处理名称



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

这将是一个像彼得,安德烈,玛丽安妮或范伦斯伯格的名字。不应允许使用亚洲字符,以及与这种方式的名称无关的其他字符。

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

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

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

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

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

你应该从:

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

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

p{Hebrew}p{Cyrillic}p{Georgian}p{Greek}

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

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

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

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

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

最新更新