javascript - 正则表达式允许以全名形式并以字母开头的任何语言字符

标签 javascript php regex

我尝试验证名称字段,对于此字段,我希望允许最终用户添加诸如 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/

相关文章:

java - 从 JSON 请求中提取一个部分的正则表达式模式

Django Rest API Url Pattern 来处理 . (点)符号

javascript - Angular ui中不调用 Controller

php - 如何从 1 列中选择具有许多 id 不同的数据 mysql

javascript 或 PHP 执行搜索和替换功能

java - Pattern.DOTALL 与 String.replaceAll

javascript - 在 Ember 中获取模型的 Controller

javascript - 无法获取/错误,

javascript - 在 laravel 中使用 ajax 更改状态

php - 多对多,另一列