-4

正規表現を作成して、すべて異なる 3 桁のみで構成される任意の長さの文字列を検索するにはどうすればよいですか?

例: 3213213312、679976679。56785678 には対応しません。

4

3 に答える 3

3

正規表現(必要な場合): Tim Pietzckerの回答

より良いアプローチ (PHP):

$letters = count(array_unique(str_split("21323132")));//3

より良いアプローチ (JavaScript):

var ltrs = '32132121232'.split('');
var unique=[];
for(var i=0,c=ltrs.length;i<c;i++)
{
    if(unique.indexOf(ltrs[i])==-1)
    {
        unique.push(ltrs[i]);
    }
}
console.log(unique.length);//3

より良いのは、柔軟性、読みやすさ、および後日変更する能力を考慮に入れていることを指摘しなければなりません. 性能試験や基準は考慮されていません。

一般的なJavaScriptソリューションを作成することになりました:

function isxnums(str,x)
{
    x = x || 3;//Default number check to 3
    if(str.match(/^[0-9]+$/)==null) return false;
    for(var c=0,s2='';str!='';)
    {
        var num = str.match(/^([0-9])/)[1];
        s2 = str.replace(new RegExp(num,'g'),'');
        if(str != s2) c++;
        str = s2;
    }
    return c==x;
}

isxnums('123');//true
isxnums('3213213312');//true
isxnums('11111');//false
isxnums('11111',1);//true
于 2013-10-08T13:09:04.073 に答える