根据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
有什么我误解的吗?
.test
检查字符串的任何部分是否与您的模式匹配:
这个正则表达式:/a{4}/
可以在5个a
的字符串中找到2个匹配项:
'aaaaa'
^^^^
^^^^
您需要告诉正则表达式严格查看字符串的开头和结尾:
var str = /^a{4}$/
console.log(str.test('aaaaa'))
在这里,^
和$
是字符串anchors的“开始”和“结束”
它返回true,因为有一个子字符串满足要求。见documentation:
每当您想知道是否在字符串中找到模式时,请使用test()
您需要在模式中显式设置字符串的开头/结尾:
var str = /^a{4}$/
str.test('aaaaa')
-> false
/a{4}/
正则表达式测试字符串是否包含aaaa子字符串。指定行的开始和结束以测试准确匹配。以下片段返回false
:
var str = /^a{4}$/
str.test('aaaaa')