Javascript 正则表达式:字符串以3到4个连续的“结束”;a「;

Javascript 正则表达式:字符串以3到4个连续的“结束”;a「;,javascript,regex,Javascript,Regex,编写一个regexp,该regexp匹配以3到最大值4个连续“a”结尾的字符串 尝试了以下内容和测试/输出。他们都应该打印“好”。我错过了什么 您使用的“以一个或多个a开头”^[a]+ 解决方案:(测试它) 试试这个: var threeToFourConsecutiveA = /^[^a]+a{3,4}$/; 我认为您缺少了第二个^,它不包括a,因为[a]表示字面上的“a”,您的模式不可能是好模式 尝试: 在正则表达式中,插入符号有两种不同的含义: 在括号内,它表示非下列字符的任何字符

编写一个regexp,该regexp匹配以3到最大值4个连续“a”结尾的字符串

尝试了以下内容和测试/输出。他们都应该打印“好”。我错过了什么

您使用的“以一个或多个a开头”
^[a]+

解决方案:(测试它)

试试这个:

var threeToFourConsecutiveA = /^[^a]+a{3,4}$/;

我认为您缺少了第二个
^
,它不包括
a

,因为
[a]
表示字面上的“a”,您的模式不可能是好模式

尝试:


在正则表达式中,插入符号有两种不同的含义:

  • 在括号内,它表示非下列字符的任何字符
  • 在括号外,这意味着字符串必须从这里开始
比较这两个:

/^[a]+a{3,4}$/ (wrong)
/[^a]+a{3,4}$/ (correct)
(正如语言律师乐于指出的那样,上述解释并非百分之百准确,但现在已经足够了。)

描述

此表达式执行以下操作

  • 验证以除“a”以外的任何字母开头并以3到4个连续的“a”结尾的单词
  • [b-z]
    强制a的最后一个字符仅为3或4个
    a
    。通过使用
    [a-z]
    *
    结构,这些结构可以允许字母
    a
    多次出现
例子 现场演示

示例文本

bafaa
bafaaa
bafaaaa
bafaaaaa
样本匹配

bafaaa
bafaaaa
解释 可供替代的


将允许最后3个或更多字符成为
a

“…以3到4个连续的“a”结尾:
^[^a].*a{3,4}$
@bloodyKnuckles:注意,您建议的更改完全没有用。@bloodyKnuckles:我认为(但我不确定)结尾超过4个“a”是不允许的,也不允许使用以“a”开头的单词如果我理解得很好,你可以在任何地方都打“a”,但不是在开始的时候,也不是在3,4最后的“a”之前。阅读这个问题我会说不,但仔细看一下测试,我认为你是正确的,尤其是
daaaaa
是注定要失败的。然而,
a{3,4}$
结尾仍然合适。简单地说:
^[^a]+a{3,4}$
现在我明白了其中的区别——thx的解释。清晰简洁。允许使用“zaaaaazaaa”吗?规则没有规定字符串不能以
a
:)开头。它只是说最大连续数可以是四个
a
。这意味着您需要验证
aaa$
aaaa$
,但不需要验证
aaaaaaa$
/^[a]+a{3,4}$/ (wrong)
/[^a]+a{3,4}$/ (correct)
^[^a].*[b-z]a{3,4}$
bafaa
bafaaa
bafaaaa
bafaaaaa
bafaaa
bafaaaa
NODE                     EXPLANATION
----------------------------------------------------------------------
  ^                        the beginning of a "line"
----------------------------------------------------------------------
  [^a]                     any character except: 'a'
----------------------------------------------------------------------
  .*                       any character except \n (0 or more times
                           (matching the most amount possible))
----------------------------------------------------------------------
  [b-z]                    any character of: 'b' to 'z'
----------------------------------------------------------------------
  a{3,4}                   'a' (between 3 and 4 times (matching the
                           most amount possible))
----------------------------------------------------------------------
  $                        before an optional \n, and the end of a
                           "line"
----------------------------------------------------------------------
^[^a][a-z]*a{3}$