JavaScript正则表达式花括号

时间:2017-12-21 14:41:32

标签: javascript regex

根据Eloquent JavaScript:

  

要指示模式应该出现精确次数,请使用花括号。例如,在元素之后放置{4}需要它恰好发生四次。

但是在Chrome中,我得到以下内容:

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

上面的段落暗示str.test()只应在恰好有4个时才返回true。相反,当至少有4个时,它会返回true。

另外

  

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

然而,与上述相同:

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

有什么我误解的吗?

3 个答案:

答案 0 :(得分:5)

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

此正则表达式:/a{4}/

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

'aaaaa'
 ^^^^
  ^^^^

你想要告诉正则表达式严格看一下开始&字符串的结尾:

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

此处,^$是字符串anchors的“开始”和“结束”

答案 1 :(得分:2)

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

  

每当您想知道是否在a中找到模式时,请使用test()   串

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

var str = /^a{4}$/ 

str.test('aaaaa')

-> false

答案 2 :(得分:0)

/a{4}/正则表达式测试字符串是否包含 aaaa 子字符串。指定行的开始和结束以测试准确匹配。以下代码段返回false

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