2012-04-25 8 views
2

電子メールアドレスをhtml形式で検証したいと考えています。正規表現にはほとんど知識がありません。javascript regex - 私の非常に単純な正規表現で何が間違っていますか?

検証は非常に簡単で、ちょうど[email protected]_symbols.two_to_eight_symbolsパターンに一致します。

私は^[email protected]+\..{2,8}$を使用しようとしている正規表現です。それでもうまくいかない場合、パターン[email protected]_symbolsを検証します。

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

EDITこれらのパターン「any_symbols ...」は、私が入力しようとしているもののテキスト表現です。これは通常、私は "[email protected]" と入力:)私は、入力フィールドに入力するものではありません、または "[email protected]" となど:)

EDIT2 Actuallコード:

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

EDIT3 * 問題が見つかりました! *これは正規表現そのものではなかった、それは私がこの全体の正規表現のことを言ってきたように、それは

new RegExp(/^[email protected]+\..{2,8}$/); 

ない

new RegExp("^[email protected]+\..{2,8}$"); 

する必要があります...私は正規表現関数に正規表現を渡す方法でした

+1

、 '/^[email protected]+\..{2,8}$/.test("[email protected]_symbols ")'は 'false'です: - ? –

+0

''[email protected]_symbols'.match(' ^。+ @。+ \ .. {2,8} $ ');' – egis

+0

私の質問が更新されました。また、https://developer.mozilla.org/ja/JavaScript/Reference/Global_Objects/String/match "一致するものがなければ、メソッドはヌルを返します。" – egis

答えて

1

実際の電子メールアドレスの正規表現は、RFC標準に準拠する必要があるため、単純ではありません。あなたが本当にすべてのシンボルを受け入れるために必要がある場合、あなたはBirei投稿正規表現を使用することができます

// 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 

:これはあなたのために働く場合

しかし、私は何の問題もなく、それを使用しました。あなたはスラッシュをエスケープする必要が

+0

私は問題を自分で見つけましたが正規表現ではありませんでしたが、有益な答えを出して評判スコアを上げるので、私はあなたの答えを受け入れています;)ありがとう! – egis

+0

私は元の表現を好んだ。少なくとも、国際化ドメイン名(IDN)を受け入れます。 –

+0

Álvaro、そうです。これは日本語や他の記号を受け入れません。私はそれについて考えたことはありません。ありがとう。たぶん、このスレッドは動作します:http://stackoverflow.com/questions/46155/validate-email-address-in-javascript – lu1s

1

ないJavascriptの専門家):)私にとって非常に新しいですが、[email protected]_symbols.two_to_eight_symbolsのあなたの定義と私はこの仕事ができると思う:

^[^@][email protected][^.]+\..{2,8}$ 
+0

それは私のregexpとは異なりますが、それでも同じパターンに一致します。 'any_symbols @ any_symbols.2_to_8_symbols'の代わりに' any_symbols @ four_symbols'にもマッチすることを意味します。 – egis

+0

申し訳ありません、あなたの正規表現は正しいですがあなたの評判スコア:ありがとう! – egis

+0

@egis:私たちはあなたの問題を解決してうれしいです。 – Birei

1

'[email protected]_symbols'.match('^[email protected]+\\..{2,8}$'); 
             ^^ 

そうでない場合は、JavaScriptが不明なエスケープシーケンスとignores the slashとして\.を読み取ります

掲載されていない文字の場合は、[...]前にバックスラッシュがあります は無視されますが、この使用法は廃止されており、避けてください。

(くそー、これは...見つけることが困難でした)私のブラウザで

関連する問題