2

メールアドレスをhtml形式で検証したい。私は正規表現の知識がほとんどありません。

検証は非常に単純で、any_symbols@any_symbols.two_to_eight_symbolsパターンを一致させるだけです。

これが私が使用しようとしている正規表現です^.+@.+\..{2,8}$。それでも機能しません。 pattern を検証しますany_symbols@four_symbols

注: このような単純な検証について心配する必要はありません。サーバー側でfilter_var(php) を実行し、そのメールにトークンを送信しています。入力された電子メールアドレスがいくつかの正気のパターンに適合する場合、フォームのボタンを有効にする必要があるだけです:)

編集問題で言及したこれらのパターン「any_symbols ...」は、入力しようとしているものの単なるテキスト表現です。これは、入力フィールドに入力するものではありません:) 通常、「test@test.com」、または「blabla@hehe.haha」などと入力します:)

EDIT2実際のコード:

   var email_regex = new RegExp("^.+@.+\..{2,8}$");
if ($target.val().match(email_regex) !== null){
    $button.removeAttr('disabled').removeClass('disabled');
}
else{
    $button.attr('disabled', 'disabled').addClass('disabled');
}

EDIT3 *問題が見つかりました! * 正規表現自体ではなく、正規表現を Regex 関数に渡す方法でした...

 new RegExp(/^.+@.+\..{2,8}$/);

ではない

new RegExp("^.+@.+\..{2,8}$");

私が言ったように、この正規表現全体は私にとってまったく新しいものです:))

4

3 に答える 3

1

スラッシュをエスケープする必要があります。

'any_symbols@four_symbols'.match('^.+@.+\\..{2,8}$');
                                        ^^

それ以外の場合、JavaScript\.は未知のエスケープ シーケンスとして読み取り、スラッシュを無視します。

リストされていない文字については [...] 前のバックスラッシュは無視されますが、この使用法は非推奨であり、避ける必要があります。

(くそー、これは見つけるのが難しかった...)

于 2012-04-25T15:02:10.603 に答える
1

Javascriptの専門家ではありませんが、あなたの定義でany_symbols@any_symbols.two_to_eight_symbolsこれはうまくいくと思います:

^[^@]+@[^.]+\..{2,8}$
于 2012-04-25T14:48:23.763 に答える
1

おそらく、実際の電子メール アドレスの正規表現は、RFC 標準に準拠する必要があるため、それほど単純ではありません。

ただし、これがうまくいく場合は、問題なく使用しています。

// The regex: /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/

// To test it:
var regex = new RegExp(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/);

if( regex.test( your_string ) ){ ... } // returns true if valid

本当に任意のシンボルを受け入れる必要がある場合は、Birei が投稿した正規表現を使用できます。

于 2012-04-25T14:54:14.620 に答える