PHP - 仅匹配unicode字母数字和标点符号

时间:2014-04-04 15:38:20

标签: php regex unicode

我有这个正则表达式:

'/^[\p{L}\p{Mn}\p{Pd}\'\x{2019}]+(\s+[\p{L}\p{Mn}\p{Pd}\'\x{2019}]+)*$/u'

目标:使用unicode字符匹配有效(最后|最后)名称(人名),例如“D'Agatti”或“María”或其他。还必须包括一些特殊符号,如连字符。

问题:它也匹配NUMBERS。

问题:如何避免匹配数字?我应该使用哪些角色类?

1 个答案:

答案 0 :(得分:0)

匹配名称的简单方法如下:

'/^([^\d]*)$/u'

这匹配除数字之外的所有内容。

然而,正如你所说,它对于名字而言过于宽泛。最后,您可以对从原始测试中获得的结果运行此测试,以删除带有数字的名称。