我正在尝试验证仅以英文字母编写的名称。其他特殊字母如ç,é等不包括在内。
我的要求是:
我试图通过2个表达式验证
\b[A-Z].*?\b
和
^[a-zA-Z ]*$
但它与PEter SVidler或PETER SVIDLER相匹配。
如何解决这个问题?
答案 0 :(得分:1)
请记住您的要求我想出了this 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
包围以允许边界。如果这是您需要的,您可以使用锚定。
答案 1 :(得分:1)
基于@noob的想法,我想出了这个:
\b[A-Z][a-z]*( [A-Z][a-z]*)*\b
匹配:
比赛案例5是美中不足的唯一。我认为鉴于要求,RegEx无法阻止。我想在输入字符串通过RegEx并检查验证器方法中的字符串长度后对其进行标记。
我错过了什么吗?
我已经测试了这个RegEx here。
答案 2 :(得分:0)
这是以下的变体:
not_this|forget_this|nevermind_this|(but_keep_this)
所以你可以提出:
^(?:\b[a-z]|\b[A-Z]{2,})(*SKIP)(*FAIL)|^([A-Za-z ]+)$