我目前的正则表达式为/^[a-zA-Z]+( [a-zA-Z]+)*$/
。它适用于以下名称:
John Smith
无论如何,该网站是国际的,名称可能是这样的,例如:
Jānis Bērziņš
这是一个有效的名称,但由于ā
,ē
和š
字符,正则表达式无法验证它。
一种方法是键入所有允许的字符,但列表将是巨大的!
我正在寻找更简单的方法。也许黑名单而不是白名单方法?
感谢任何建议!
答案 0 :(得分:6)
使用带有the appropriate Unicode character propert(y/ies)的UTF-8模式的正则表达式。
答案 1 :(得分:2)
只需使用字母\pL
/^\pL+( \pL+)*$/
请参阅here on regular/expressions.info unicode属性概述
在我writecodeonline.com的测试中,这是有效的
$s = "Jānis Bērziņš";
preg_match("/^\\pL+( \\pL+)*$/", $s, $matches);