0

+@[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$/;このコードをフォームの電子メールフィールドに追加すると/^[\ba-zA-Z\s-\.\_]、キーを受け入れません。

function mailonly(e){

var code;
if (!e) var e = window.event;
if (e.keyCode) code = e.keyCode;
else if (e.which) code = e.which;
var character = String.fromCharCode(code);
    var AllowRegex  =/^[\ba-zA-Z\s-\.\_]



+@[a-zA-Z0-9\.\-]+\.[a-zA-Z]{2,4}$/;

    if (AllowRegex.test(character)) return true;
    return false;
}
4

2 に答える 2

0

他の人が言ったように、あなたの正規表現は電子メールアドレスを適切に検証しません. ただし、発生している特定の問題は、\s と . 正規表現の最初の部分。正規表現インタープリターは、範囲 \s- として読み取ろうとします。もちろん、これは何もありません。

sp00m も私を打ち負かしました。\b を取り除くだけでなく、電子メール アドレスの最初の部分で \s を一致させたくないのではないかと思います。また、その部分で 0-9 を一致させる必要があります。

于 2013-11-06T13:55:24.390 に答える
0

文字クラスではダッシュをエスケープする必要があります (またはクラスの先頭/末尾に配置します)。

/^[\ba-zA-Z\s\-\.\_]    or    /^[\ba-zA-Z\s\.\_-]

ちなみに、他の文字をエスケープする必要はありません:

/^[\ba-zA-Z\s._-]

そして、\bここでは何もしません:

/^[a-zA-Z\s._-]

正規表現の残りの部分は問題ないようです。

ただし、正規表現でメールを検証しようとしないでください。/.+@.+/たとえば、アカウントを検証するリンクを含む確認メールを送信するときに使用できます。

于 2013-11-06T13:53:21.250 に答える