1

重複の可能性:
Javascript でメールアドレスを検証しますか?

Javascript を使用してクライアント側の電子メール アドレスを検証する際に問題が発生しています。多くの検索の後、次のような正規表現を見つけました:-

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

私がテストしたほとんどの電子メールIDで問題なく動作していました. しかし、突然、.com.com同じような拡張子の電子メールも表示されていることがわかりました。これは、私にとって深刻なバグです。

私の質問は、言及された正規表現をどのように変更できるかということです。これも無効になります.com.com

また、他の多くの正規表現も試してみましたが、すべて同じ問題があるようです...

ありがとう...

4

3 に答える 3

1

この正規表現を試してください:

function verifyEmail(){
var status = false;     
var emailRegEx = /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i;
     if (document.myform.email1.value.search(emailRegEx) == -1) {
          alert("Please enter a valid email address.");
     }
     else{
         status = true;
     }
     return status;
}
于 2013-01-20T17:16:25.550 に答える
1

これにより、 で終わるアドレスはすべて無効になります.com.com:

/^([A-Za-z0-9_\-\.])+\@(?![A-Za-z0-9_\-\.]+\.com\.com)([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$

これは、で終わるものも無効にし@com.comます:

/^([A-Za-z0-9_\-\.])+\@(?!(?:[A-Za-z0-9_\-\.]+\.)?com\.com)([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$

最後に、これにより、.net.net、.au.au などの繰り返しで終わるものが無効になります。

/^([A-Za-z0-9_\-\.])+\@(?!(?:[A-Za-z0-9_\-\.]+\.)?([A-Za-z]{2,4})\.\2)([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$

于 2013-01-20T17:56:25.127 に答える
0
function emailCheck (emailStr) {
 var checkTLD=1;
   var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
  var emailPat=/^(.+)@(.+)$/;
  var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
  var validChars="\[^\\s" + specialChars + "\]";
  var quotedUser="(\"[^\"]*\")";
  var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
  var atom=validChars + '+';

  var word="(" + atom + "|" + quotedUser + ")";
  var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
  var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
 var matchArray=emailStr.match(emailPat);
  if (matchArray==null) {
  alert("Email address seems incorrect (check @ and .'s)");
return false;
}

私のISPウェブサイトの公式メールチェック方法。これには著作権はありません。だからあなたはそれを使うことができます。

于 2013-01-20T17:21:27.330 に答える