Javascript正则表达式-无序字符串中特定的字符数
我试图测试一个无序的字符串是否有5次“3” 例如:Javascript正则表达式-无序字符串中特定的字符数,javascript,regex,Javascript,Regex,我试图测试一个无序的字符串是否有5次“3” 例如: var re = /3{5}/; re.test("333334"); //returns true as expected re.test("334333"); //returns false since there is no chain of 5 3s 什么正则表达式可以使第二行返回为真?如果正则表达式不是测试这一点的最佳方法,那么它是什么 谢谢 试试看 (str.match(/3/g) || []).length >= 5 或
var re = /3{5}/;
re.test("333334"); //returns true as expected
re.test("334333"); //returns false since there is no chain of 5 3s
什么正则表达式可以使第二行返回为真?如果正则表达式不是测试这一点的最佳方法,那么它是什么
谢谢 试试看
(str.match(/3/g) || []).length >= 5
或
其中str
是要测试的字符串。您可以编写以下内容:
var re = /(?:3[^3]*){5}/;
我会选择
s.replace(/[^3]/,'').length >= 5
假设要测试的字符串名为s
,我会选择:
string.indexOf('33333') > -1
它应该是
str.split('3')
(带引号)。已为您修复。@SashaChedygov引号不是必需的。从中,在步骤8,“如果分隔符
是RegExp
对象(其[[Class]]]
是“RegExp
”),则让R=separator
;否则让R=ToString(分隔符)
”@Oriol:谢谢您的澄清,我不知道这一点。我还是更喜欢引用,但那只是我自己。:)@SashaChedygov还注意到,split
方法需要
而不是=
,因为它计算一个附加项:'.split(3).length==1
,'3'.split(3).length==2
,等等。嗨,我是regexp新手,在理解捕获括号方面有困难。根据MDN,这将匹配“3[^3]*”,但不记得匹配。这到底意味着什么?@Ativ:yes(?:…)
是非捕获括号。目标只是分组,以便能够将{5}
量词放入因子中。捕获组将存储内容以供以后重用(使用反向引用)。但这里不需要它。使用非捕获组使用的内存明显较少,而且速度稍快。
string.indexOf('33333') > -1