2016-05-12 14 views
0

文字列(555)-555-5555が与えられたとします。文字列に数字5が10回含まれているかどうかを確認する方法はありますか?私はこれを解決する他の方法を考えることができますが、regExを使ってこれを行うことができるかどうか不思議です。私は var re = new regExp(/5{10}/); を使ってみましたが、明らかにこれは10の5つの行にしか一致しません。文字列に特定の文字数が含まれているかどうかを確認するには、JavaScriptでRegExを使用できますか?

+1

にこれが重複して... – Galik

+0

てみではありません: '^(?:[^ 5] * 5){10} [^ 5] * $ ' – Galik

+0

間違いなく重複はありません。 – RoryAvant

答えて

0

"ほとんど"正規表現の解決策は、他のすべての文字を空の文字列に置き換え、結果の長さをチェックすることです。または、同様に、空の文字列で目的の文字を照合して置き換えることができます。また、その文字列が目的の番号であるかどうかを確認することもできます。

3

1)すべての非 - 5を削除し、残りを数えます。

str.replace(/[^5]/g, '').length == 10 

2)カウント5 -with-テールグループ:

str.match(/^[^5]*(?:5[^5]*){10}$/) 

EDIT:修正されたバグ。また、説明:文字列(^...$)の全体は、任意の数の非5と、それに続く1つの5と任意の数の非5の厳密な10グループで構成されます。したがって、

x55pp5peep5o5555taco5lol5 

ブレイクダウン

^    start of string 
[^5]*   x 
(?:5[^5]*){10} 5 
       5pp 
       5peep 
       5o 
       5 
       5 
       5 
       5taco 
       5lol 
       5 
$    end of string 
+0

ニース、私は最初の解決策が気に入っていますが、2番目の解決策を理解するのに少し問題がありましたが、私はまだregExのノブです。 – RoryAvant

関連する問題