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