JavaScript正则表达式大括号

JavaScript正则表达式大括号,javascript,regex,Javascript,Regex,根据雄辩的JavaScript: 要指示模式应该出现精确的次数,请使用大括号。例如,将{4}放在一个元素之后,要求它正好出现四次 然而,在Chrome中,我得到以下信息: var str = /a{4}/ str.test('aaaaa') // → true 上面的段落暗示str.test()只应在正好有4个a时返回true。相反,当至少有4个a时,它返回true 也 也可以这样指定范围:{2,4}表示元素必须至少出现两次,最多出现四次 但是,与上述情况相同: var str = /a{2,

根据雄辩的JavaScript:

要指示模式应该出现精确的次数,请使用大括号。例如,将{4}放在一个元素之后,要求它正好出现四次

然而,在Chrome中,我得到以下信息:

var str = /a{4}/
str.test('aaaaa')
// → true
上面的段落暗示str.test()只应在正好有4个a时返回true。相反,当至少有4个a时,它返回true

也可以这样指定范围:{2,4}表示元素必须至少出现两次,最多出现四次

但是,与上述情况相同:

var str = /a{2,4}/
str.test('aaaaa')
// → true

是否有我误解的地方?

它返回true,因为有一个子字符串满足要求。见:

无论何时,只要您想知道是否在 串

您需要在模式中显式设置字符串的开头/结尾:

var str = /^a{4}$/ 

str.test('aaaaa')

-> false

.test
检查字符串中是否有与您的模式匹配的部分:

这个正则表达式:
/a{4}/

可以在5个
a
的字符串中找到2个匹配项:

'aaaaa'
 ^^^^
  ^^^^
您需要告诉正则表达式严格查看字符串的开头和结尾:

var str=/^a{4}$/

console.log(str.test('aaaaa'))
正则表达式测试字符串是否包含aaaa子字符串。指定要测试精确匹配的行的起点和终点。以下代码段返回
false

var str = /^a{4}$/
str.test('aaaaa')

将表达式和测试字符串放入,它将为您提供一个易于理解的可视化表示,说明前者如何应用于后者,让我们明白为什么你的测试刺确实是匹配的。你的误解是,在有5个a的字符串中,有两个地方a正好出现4次
aaaa.
.aaaa
。正则表达式与第一个匹配,但技术上也可以与第二个匹配。