我试着验证那些只用英文字母写的名字。不包括其他特别字母,如奥契等。
我的要求是:
我试图通过两个表达式来验证
\b[A-Z].*?\b和
^[a-zA-Z ]*$但它与PEter SVidler或PETER相匹配。
如何解决这一问题?
发布于 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 M或Vivekanand P V中
被\b包围以允许边界。如果你需要的话,你可以使用锚定。
发布于 2016-01-24 03:16:23
在“noob”这个概念的基础上,我想出了这样的想法:
\b[A-Z][a-z]*( [A-Z][a-z]*)*\b它符合:
火柴箱5是药膏中唯一的苍蝇。我想,考虑到这些要求,RegEx是无法阻止的。当输入字符串传递RegEx并在验证器方法中检查字符串长度时,我正在考虑对它进行标记化。
我是不是遗漏了什么?
我已经测试过这个RegEx 这里。
发布于 2016-01-23 19:48:59
这是以下几个方面的变化:
not_this|forget_this|nevermind_this|(but_keep_this)所以你可以想出:
^(?:\b[a-z]|\b[A-Z]{2,})(*SKIP)(*FAIL)|^([A-Za-z ]+)$https://stackoverflow.com/questions/34967274
复制相似问题