2

私はJavaScriptで作業していて、テキストに兆候があるかどうかを確認したいと思っています。テキストに()と&文字が含まれているか、繰り返し文字が含まれているかを確認したいのですが。いくつかの例:

テスト-複数のtがあります

tes&t -has&

test(test) -(と)、複数のtと2回の「e」文字があります

test&(test -has&and(および複数のtおよびe

test&(&t-複数のt、複数の&および(

tesra-これはどのパターンにも適合しません

私はすでにこのようなものを作りました:

if ((/(\w+)(?=\1)/g).test(str)) alert('multiple signs')

ただし、複数の記号が次々にある場合にのみカウントされるため、「teest」はパターンに適合し、テストは行われません。誰か助けてもらえますか?私はそれらすべての正規表現機能を理解することはできませんでした:(それは2つの正規表現に分けることができます。

よろしくお願いします

4

2 に答える 2

2

.*先読みにを追加する必要があります。

(\w)(?=.*\1)|[()&]

正規表現でここを参照してください

また、リクエストされた文字を含めるために、文字クラスとの交互を追加しました()&

\w文字クラスを使用する代わりに文字(ASCII)のみが必要な場合

([a-zA-Z])(?=.*\1)|[()&]
于 2012-08-01T20:26:39.677 に答える
1

これはそれを行う必要がありますが、(固定されていないため)あまり効率的ではない可能性があります。

(?:[&()]|(\w)[^\1]*\1)

別の方法は、単に文字を繰り返し処理し、それらを調べて数えることです。

function contains_multiple_chars(str, extra) {
    var chars = {};
    for(var i = 0,l = str.length; i < l;i++) {
        var c = str.charAt(i);
        if(c in chars || c in extra) {
            return true;
        }
        else {
            chars[c] = 1;
        }
    }
    return false;
}

var multiple = contains_multiple_chars(str, {'(': 1, ')': 1, '&': 1});

(関数名がうまく適合しないことを認めます)

于 2012-08-01T20:26:57.800 に答える