Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript正则表达式-无序字符串中特定的字符数_Javascript_Regex - Fatal编程技术网

Javascript正则表达式-无序字符串中特定的字符数

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 或

我试图测试一个无序的字符串是否有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

其中
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