2011-04-28 26 views
0

可能性の重複:
What is the best regular expression for validating email addresses?JavaScriptの電子メールの検証が正しく機能していない、HELP?

こんにちはすべて、私は電子メールアドレスを検証するには、この正規表現/コードを持って

var testEmail = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/; 

if (testEmail.test(oForm["email"]) == false){ 
    chErrorMessage += "\nValid email address"; 
    bSubmit = false; 
} 

コードは」doesnの電子メールが書式設定されているかどうかに関係なく、正しくテストを行っているようです直前かどうか。

私はJavaScriptの初心者です。任意の助けをいただければ幸いです、おかげで

+1

あなたは結果を説明できますか?電子メールが有効でない場合、あなたのchErrorMessageは「有効な電子メールアドレス」メッセージを受け取りますか?それとも反対ですか?それとも、それは毎回一つのことをしていますか? – rdevitt

+3

'日本語@ gmail.com'と' foo @例子。测试 'は有効なメールアドレスです。 latin文字の電子メールアドレスの正規表現はsoo 1990です。さらに、 '.museum 'のような4文字より長いtldもあります。 – BalusC

+0

もっとコードを表示できますか?正規表現のテストは正常に動作しているようです:[test](http://jsfiddle.net/kUWdd/1/)。 – Geert

答えて

1

document.oForm["email"].value 

また、結果がの場合は条件コードを実行します210ないfalseので、条件は次のようになります

testEmail.test(document.oForm["email"].value) == true 

しかし、比較値自体を条件として使用するのに十分であるので、trueまたはfalseにブール値を比較することは非常にエレガントではない:

if (testEmail.test(document.oForm["email"].value)) { 
    // ... 
} 

これらの変更を行った後、あなたのコードは私のために働いていました。 しかし、正規表現が電子メールに関して無視するすべての無限の詳細を処理するので、私はJQueryでこのソリューションを使用します。 OTOH、とにかくJavaScriptでregexesがどのように動作するかを理解していただければ幸いです。

HTH

+0

ありがとうございます、あなたの解決策は...私が行方不明だった唯一のもの'.value'です。ドキュメントは必要ありません。フォーム... – Nasir

+0

@Nasirは本当に必要ありません。しかし、フォーム変数をグローバルスコープから取得することは悪い習慣と考えている人もいます。助けてうれしい! – brandizzi

2

私はこのためにjQueryの検証プラグインを使用します。http://docs.jquery.com/Plugins/validation

それは、電子メールアドレスの検証をサポートしています。

まず、私はこのよう

document.oForm["email"] 

代わりの

oForm["email"] 

その後、フォームの入力オブジェクトを取得したい、あなたが入力し、入力しない自分自身の値を取得する必要があります

0

が出て、このコードを試してください: -

/** 
* DHTML email validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/) 
*/ 

function echeck(str) { 

     var at="@" 
     var dot="." 
     var lat=str.indexOf(at) 
     var lstr=str.length 
     var ldot=str.indexOf(dot) 
     if (str.indexOf(at)==-1){ 
      return false 
     } 

     if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){ 
      return false 
     } 

     if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){ 
      return false 
     } 

     if (str.indexOf(at,(lat+1))!=-1){ 
      return false 
     } 

     if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){ 
      return false 
     } 

     if (str.indexOf(dot,(lat+2))==-1){ 
      return false 
     } 

     if (str.indexOf(" ")!=-1){ 
      return false 
     } 

     return true      
    } 

function ValidateForm(){ 
    return echeck(document.oForm["email"].value); 
} 

そして最後にちょうどValidateForm()を呼び出して何の戻り値あなたはそれが電子メールの妥当性になってしまいます!

乾杯! :D

関連する問題