正则表达式 - 只允许在单词开头使用大写字母

Regex - Allow capital letters just at the beginning of words

我必须检查单词开头是否存在大写字母。

我的正则表达式现在看起来像这样: /^([A-ZÁÉÚŐÓÜÖÍ]([a-záéúőóüöí]*\s?))+$/

在单词开头的效果很好,但如果问题不在单词的开头,那就失败了。 例如:John JohnJ 已通过验证。

我应该在我的正则表达式中替换什么才能正常工作?

在您的正则表达式模式中,space 是可选的,允许 JJohnJohnJ 之类的组合 - 关键是要在单词之间设置它。有两种方法可以做到这一点:

推出你的模式:

/^[A-ZÁÉÚŐÓÜÖÍ][a-záéúőóüöí]*(?:\s[A-ZÁÉÚŐÓÜÖÍ][a-záéúőóüöí]*)*$/

或者在你的模式中使 space 成为必需的,但也可以让它成为行尾(虽然这允许尾随 space)。

/^(?:[A-ZÁÉÚŐÓÜÖÍ][a-záéúőóüöí]*(?:\s|$))+$/

在这两种模式中,我都删除了您原来的一些多余的组,并将所有组都变成了非捕获组。

你可以这样做:/^([A-ZÁÉÚŐÓÜÖÍ]{0,1}([a-záéúőóüöí]*\s?))+$/

对于 {a,b}a 是它将匹配的最少字符数,而 b 是它将匹配的最多字符数。

如果开头总是大写字母,您可以简单地使用:/^([A-ZÁÉÚŐÓÜÖÍ]{1}([a-záéúőóüöí]*\s?))+$/

在前面的例子中,{c}c 是它将匹配的确切字符数。

Here is a resource with good information.