電子書籍の厳選無料作品が豊富!

javascriptで入力チェック時に以下の条件を満たすようにしたいのですが、
簡単にできる方法はないでしょうか。

条件
・文字列内に同じ文字が指定回数以上出現していたらアラートを出したい。

例)「1a1b1a1c」という文字列があったとすると、「1」の出現回数は4。
「a」の出現回数は2。「b」「c」の出現回数は1。
といったように、連続しているとは限らないある特定の文字が
何回出現しているかを知るにはどうしたら良いでしょうか。

正規表現で試みたのですが、どうにもできず困っております。

A 回答 (3件)

普通にデータを順番に検証してみては?



<script>
var str="1a1b1a1c";
var obj=new Object();
for(var i=0;i<str.length;i++){
var j=str.substr(i,1);
if(!obj[j]) obj[j]=0;
obj[j]++;
}
for(var i in obj){
document.write(i+"="+obj[i]+"<br>\n");
}
</script>
    • good
    • 0

正規表現で無駄にやってみた場合……


var str = "a1b1c1c1", char, result = [], length = 0, regexp;
while (char = str.charAt(0)) {
result[length++] = char + ':' + str.match(regexp = new RegExp(char, 'g')).length;
str = str.replace(regexp, '');
}
alert(result.join('\n'));
    • good
    • 0

こそっ。



function hoge (_, l) {
 _[l] = (_[l] || 0) + 1; return _;
}

var str="1a1b1a1c";
var obj = str.split('').reduce (hoge, {});

for(var i in obj)
 if (obj.hasOwnProperty(i))
  document.write(i+"="+obj[i]+"<br>\n");
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!