首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >名称大写和无特殊字符的正则表达式

名称大写和无特殊字符的正则表达式
EN

Stack Overflow用户
提问于 2016-01-23 18:40:42
回答 4查看 4.1K关注 0票数 1

我试着验证那些只用英文字母写的名字。不包括其他特别字母,如奥契等。

我的要求是:

  1. 每个单词都应该以大写字母开头(彼得·斯维德勒)
  2. 一个单词不应该有两个大写字母(PEter Svidler必须失败)
  3. 不允许任何数字。(彼得Svidler9或彼得9斯维德勒应该失败)
  4. 不允许使用特殊字符。(彼得·斯维德勒)否则彼得S.vidler一定会失败)
  5. 需要匹配的情况: a. r.G S Devan或Achar K K S R(允许尽可能多的大写首字母开头或结尾) b.一个词或多个单词( Chandra,Chandra Shekhar Raju,.)

我试图通过两个表达式来验证

代码语言:javascript
复制
\b[A-Z].*?\b

代码语言:javascript
复制
^[a-zA-Z ]*$

但它与PEter SVidler或PETER相匹配。

如何解决这一问题?

EN

回答 4

Stack Overflow用户

发布于 2016-01-23 19:51:26

记住你的要求,我想出了这个大王。

Regex\b[A-Z][a-z]* [A-Z][a-z]*( [A-Z])?\b

解释

[A-Z][a-z]*与名字匹配,第一个字符是大写,其余字符都很小,可以是0 or many,后面是空格。

[A-Z][a-z]*与姓氏或中间名相匹配,与名相同。

( [A-Z])?匹配可选的姓氏,如在Botvinnik M MVivekanand P V

\b包围以允许边界。如果你需要的话,你可以使用锚定。

票数 1
EN

Stack Overflow用户

发布于 2016-01-24 03:16:23

在“noob”这个概念的基础上,我想出了这样的想法:

代码语言:javascript
复制
\b[A-Z][a-z]*( [A-Z][a-z]*)*\b

它符合:

  1. 约翰·D、英、法、西
  2. D、E、S、Matthew
  3. Alladi Krishna Swami Aiyar
  4. Raja Ravi Varma M
  5. 阿、中、中、英、法

火柴箱5是药膏中唯一的苍蝇。我想,考虑到这些要求,RegEx是无法阻止的。当输入字符串传递RegEx并在验证器方法中检查字符串长度时,我正在考虑对它进行标记化。

我是不是遗漏了什么?

我已经测试过这个RegEx 这里

票数 1
EN

Stack Overflow用户

发布于 2016-01-23 19:48:59

这是以下几个方面的变化:

代码语言:javascript
复制
not_this|forget_this|nevermind_this|(but_keep_this)

所以你可以想出:

代码语言:javascript
复制
^(?:\b[a-z]|\b[A-Z]{2,})(*SKIP)(*FAIL)|^([A-Za-z ]+)$

regex在regex101.com上的演示

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34967274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档