2

私はJavascriptでRegularExpresionsを学んでいますが、理解できないことがあります。

次の正規表現は、aからzまでの任意の文字列と一致する必要がありますが、数値を追加すると、それは正しいと表示されます

var patron = /[a-zA-Z]/;
var regex = new RegExp(patron);
        var v= "hello word 512";

        if(v.match(regex))
        {
            //should not match but it does
        }else
        {
            objInput.style.color = "red";
        }

そして彼らは私がこれを試しました:

 var patron = /[a-zA-Z\D]/;
var regex = new RegExp(patron);
        var v= "hello word 512";

        if(v.match(regex))
        {
            //should not match but still dont work
        }else
        {
            objInput.style.color = "red";
        }

また、括弧が一致していません

 var patron = /[a-zA-Z\"\']/;
    var regex = new RegExp(patron);
            var v= "hello word 512";

        if(v.match(regex))
        {
            //it match whenever the double quoute it followed by the single quoute'
        }else
        {
            objInput.style.color = "red";
        }
4

3 に答える 3

3

提供した最初の例について、正規表現/[a-zA-Z]/は入力文字列内の文字をチェックします。入力文字列で検出hされるため、trueを返します。あなたがする必要があるのは、開始アンカーと終了アンカー、^そして$正規表現を配置することです。新しい正規表現は次のようになります。

/^[a-zA-Z]+$/

それに応じて、すべての正規表現に変更を加えることができます。
括弧を一致させるには、円記号で括弧をエスケープする必要があります。\(に一致(し、に\)一致し)ます。

于 2013-03-01T13:54:47.887 に答える
2

^(文字列の先頭に一致)および$(文字列の末尾に一致)演算子を使用して、文字列全体を一致させる必要があります。次に例を示します。

/^[a-zA-Z\s]+$/.test("any string followed by numbers! 555") // will return false

a-zこれにより、文字列に文字とスペース以外は許可されません。

于 2013-03-01T13:52:18.417 に答える
0

一致関数は、あなたの場合、少なくとも1つの一致を探します。これは、文字である最初の記号です。文字のみが必要な場合は、/ [a-zA-Z] /。test( "your string")を使用します

于 2013-03-01T13:50:17.293 に答える