正则表达式允许使用全名形式的任何语言字符并以字母

时间:2015-07-21 08:47:50

标签: javascript php regex

我尝试验证名称字段,对于此字段,我希望允许最终用户添加Merianos NikosΜέριανος Νίκος(希腊语)或其他任何语言的字符。形式。

表格是首字母大写字母,低位字母的剩余字母,以及至少两个字。

Currectly我有这个正则表达式/^([A-Z][a-z]*((\s)))+[A-Z][a-z]*$/与英语完美配合,但与希腊人和其他语言不一致。

最后,我想用至少一个单词验证另一个字段,并使用frist字母大写,但是这个字段也可以包含单词后面的字符。

目前我使用的是正常的正则表达式/^[\s\w\.\-_]+$/,但我再次遇到希腊语和其他语言的问题。

3 个答案:

答案 0 :(得分:2)

您可以通过使用Unicode Categories来完成此操作。因此,正则表达式^\p{Lu}\p{Ll}+( \p{Lu}\p{Ll}+)*$将匹配大写字母后跟一个或多个小写字母,后跟0个或更多其他名称,用空格分隔。表达式的示例显示为here

关于你的第二点,你可以使用排序^\p{Lu}\p{Ll}*$的东西,它至少会有1个大写字母后跟0个或更多小写字母。

上面的表达式假设您的名字中没有引号,例如O'Brian或破折号Foo-bar。如果你想特别处理希腊名字,并且你知道希腊名字既没有引号也没有破折号,那么这应该不是一个大问题。

通常只需确保提供的名称不是空的,而不是指定一些严格的形式。有关此事的更多信息,请参阅this问题。

答案 1 :(得分:0)

^[{\p{L}}{0-9}]$

此正则表达式匹配来自任何语言(以及数字)的任何字母。

答案 2 :(得分:0)

function isFullname($fullname) {
   return preg_match("/^((?:\p{Ll}|\p{Lu}){2,30}\s?){2,4}$/g", $fullname);
}

这对我很有用。因为用户名也可能是小写的。

并且它可以有至少 2 个字符的名字或姓氏。此外,我接受最多 30 个字符的名称。我让它至少重复 2 次,最多 4 次。

它可以有一个像 McCésy 这样的名字(真的吗?=))......