可以在javascript中使用正则表达式来查看字符串是否包含特定数量的特定字符吗?
假设给我一个字符串(555)-555-5555,有没有办法检查该字符串是否正好包含10个数字5?我可以想出其他方法来解决这个问题,但我很好奇是否可以用正则表达式来解决这个问题。我试着用可以在javascript中使用正则表达式来查看字符串是否包含特定数量的特定字符吗?,javascript,regex,string,Javascript,Regex,String,假设给我一个字符串(555)-555-5555,有没有办法检查该字符串是否正好包含10个数字5?我可以想出其他方法来解决这个问题,但我很好奇是否可以用正则表达式来解决这个问题。我试着用 var re=newregexp(/5{10}/) 但是很明显,这只匹配一行中的10个5。一个“主要”的正则表达式解决方案是将所有其他字符替换为空字符串,并检查结果的长度。或者类似地,您可以将所需的字符匹配并替换为空字符串,然后计算差值,看看它是否是所需的数字。一个“主要”正则表达式解决方案是将所有其他字符匹配并
var re=newregexp(/5{10}/)代码>
但是很明显,这只匹配一行中的10个5。一个“主要”的正则表达式解决方案是将所有其他字符替换为空字符串,并检查结果的长度。或者类似地,您可以将所需的字符匹配并替换为空字符串,然后计算差值,看看它是否是所需的数字。一个“主要”正则表达式解决方案是将所有其他字符匹配并替换为空字符串,然后检查结果的长度。或者类似地,您可以将所需的字符匹配并替换为空字符串,然后计算差值,看看它是否是所需的数字。1)删除所有非5
,计算剩余的数字
str.replace(/[^5]/g, '').length == 10
2) 计数5
-带尾组:
str.match(/^[^5]*(?:5[^5]*){10}$/)
编辑:修复错误。另外,解释是:整个字符串(^…$
)由任意数量的非5
组成,然后是10组5
和任意数量的非5
。因此,
x55pp5peep5o5555taco5lol5
分解成
^ start of string
[^5]* x
(?:5[^5]*){10} 5
5pp
5peep
5o
5
5
5
5taco
5lol
5
$ end of string
1) 删除所有非
5,清点剩余部分
str.replace(/[^5]/g, '').length == 10
2) 计数5
-带尾组:
str.match(/^[^5]*(?:5[^5]*){10}$/)
编辑:修复错误。另外,解释是:整个字符串(^…$
)由任意数量的非5
组成,然后是10组5
和任意数量的非5
。因此,
x55pp5peep5o5555taco5lol5
分解成
^ start of string
[^5]* x
(?:5[^5]*){10} 5
5pp
5peep
5o
5
5
5
5taco
5lol
5
$ end of string
这不是重复的…请尝试:
^(?[^5]*5){10}[^5]*$
绝对不是重复的。这不是重复的…请尝试:^(?[^5]*5){10}[^5]*$
绝对不是重复的。很好,我喜欢第一个解决方案,但理解第二个解决方案有点困难,我仍然是正则表达式的noob。很好,我喜欢第一个解决方案,虽然在理解第二种解决方案时有点困难,但我仍然是regEx的一个noob。