我尝试验证名称字段,对于此字段,我希望允许最终用户添加诸如 Merianos Nikos
、Μέριανος Νίκος
(希腊语)或来自任何其他语言的相同形式的字符。
格式为第一个字母大写,单词的其余字母小写,并且至少两个单词。
目前我有这个正则表达式 /^([A-Z][a-z]*((\s)))+[A-Z][a-z]*$/
与英语完美配合,但不是与希腊语,也许还有其他语言。
最后,我想验证另一个字段,其中至少有一个单词,首字母大写,但该字段也可以包含单词后面的字符。
目前我使用以下正则表达式 /^[\s\w\.\-_]+$/
有效,但我再次遇到希腊语和其他语言的问题。
最佳答案
您可以通过使用Unicode Categories
来做到这一点。因此,正则表达式 ^\p{Lu}\p{Ll}+(\p{Lu}\p{Ll}+)*$
将匹配大写字母后跟一个或多个小写字母,后跟 0 个或多个其他名称,以空格分隔。该表达式的示例如 here 所示。 .
关于你的第二点,你可以使用 ^\p{Lu}\p{Ll}*$
之类的东西,它预计至少有 1 个大写字母,后跟 0或更多小写字母。
上面的表达式假设您的名称中没有引号,例如 O'Brian
或破折号 Foo-bar
。如果您想专门处理希腊名称,并且您知道希腊名称中既没有引号也没有破折号,那么这应该不是什么大问题。
通常只需确保提供的名称不为空,而不是指定某种严格的形式。请引用this询问有关此事的更多信息。
关于javascript - 正则表达式允许以全名形式并以字母开头的任何语言字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31534321/