说我给了一个字符串(555)-555-5555,有没有办法检查字符串是否恰好包含10次出现的数字5?我可以想出解决这个问题的其他方法,但我很好奇是否可以使用regEx来完成。我试过用
var re = new regExp(/5{10}/);
但显然这只能连续匹配10个。
答案 0 :(得分:3)
1)删除所有非5
,计算遗骸。
str.replace(/[^5]/g, '').length == 10
2)计算5
- 尾巴组:
str.match(/^[^5]*(?:5[^5]*){10}$/)
编辑:修复了错误。另外,解释:字符串的整体(^...$
)由任意数量的非5
组成,后面跟着正好10个一组5
和任意数量的非5
1}}。因此,
x55pp5peep5o5555taco5lol5
分解为
^ start of string
[^5]* x
(?:5[^5]*){10} 5
5pp
5peep
5o
5
5
5
5taco
5lol
5
$ end of string
答案 1 :(得分:0)
A"主要是"正则表达式解决方案是匹配用空字符串替换所有其他字符并检查结果的长度。或者类似地,你可以匹配并用空字符串替换你想要的字符并取出差异,看看它是否是你想要的数字。