Javascript 正则表达式:字符串以3到4个连续的“结束”;a「;
编写一个regexp,该regexp匹配以3到最大值4个连续“a”结尾的字符串 尝试了以下内容和测试/输出。他们都应该打印“好”。我错过了什么 您使用的“以一个或多个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”,您的模式不可能是好模式 尝试: 在正则表达式中,插入符号有两种不同的含义: 在括号内,它表示非下列字符的任何字符
^[a]+
解决方案:(测试它)
试试这个:
var threeToFourConsecutiveA = /^[^a]+a{3,4}$/;
我认为您缺少了第二个
^
,它不包括a
,因为[a]
表示字面上的“a”,您的模式不可能是好模式
尝试:
在正则表达式中,插入符号有两种不同的含义:
- 在括号内,它表示非下列字符的任何字符
- 在括号外,这意味着字符串必须从这里开始
/^[a]+a{3,4}$/ (wrong)
/[^a]+a{3,4}$/ (correct)
(正如语言律师乐于指出的那样,上述解释并非百分之百准确,但现在已经足够了。)描述
此表达式执行以下操作
- 验证以除“a”以外的任何字母开头并以3到4个连续的“a”结尾的单词
强制a的最后一个字符仅为3或4个[b-z]
。通过使用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}$