我必须检查大写字母是否存在于单词的开头。
我的正则表达式现在看起来像这样:
/^([A-ZÁÉÚŐÓÜÖÍ]([a-záéúőóüöí]*\s?))+$/
在开头的单词中表现良好,但如果问题不在单词的开头就会失败。
例如:John JohnJ
已经过验证。
我应该在我的正则表达式中交替使用哪种方法?
答案 0 :(得分:1)
在你的正则表达式模式中,空格是可选的,允许JJohn
或JohnJ
之类的组合 - 关键是在单词之间需要它。有两种方法可以做到这一点:
推出你的模式:
/^[A-ZÁÉÚŐÓÜÖÍ][a-záéúőóüöí]*(?:\s[A-ZÁÉÚŐÓÜÖÍ][a-záéúőóüöí]*)*$/
或者需要在你的模式中使用空格,但也可以让它成为行尾(这允许尾随空格)。
/^(?:[A-ZÁÉÚŐÓÜÖÍ][a-záéúőóüöí]*(?:\s|$))+$/
在这两种模式中,我删除了原始的一些多余组,并将所有组变为非捕获组。
答案 1 :(得分:0)
您可以执行此操作:/^([A-ZÁÉÚŐÓÜÖÍ]{0,1}([a-záéúőóüöí]*\s?))+$/
使用{a,b}
,a
是匹配的字符数最少,而b
是匹配的最多字符数。
如果一开始总是大写字母,那么您只需使用:/^([A-ZÁÉÚŐÓÜÖÍ]{1}([a-záéúőóüöí]*\s?))+$/
在上一个案例中,{c}
,c
是匹配的确切字符数。