正则表达式 - 在单词

时间:2017-06-24 08:01:48

标签: javascript regex validation words

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

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

在开头的单词中表现良好,但如果问题不在单词的开头就会失败。 例如:John JohnJ已经过验证。

我应该在我的正则表达式中交替使用哪种方法?

2 个答案:

答案 0 :(得分:1)

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

推出你的模式:

/^[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是匹配的确切字符数。

Here is a resource with good information.