繁体   English   中英

JavaScript Regex花括号

[英]JavaScript Regex curly braces

根据Eloquent 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

我有误会吗?

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

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

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

'aaaaa'
 ^^^^
  ^^^^

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

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

在这里, ^$是字符串锚点的 “开始”和“结束”

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

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

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

var str = /^a{4}$/ 

str.test('aaaaa')

-> false

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM