2017-07-30 27 views
0

javascriptでregexpを勉強しています。入力したメールを確認する必要があります。入力した電子メールを確認してください

は、この有無:

reg=/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/ 

をしかし、私はこのメールが@google.comまたは@me.comに終わるかどうかを確認する必要があります。 /@google.com$|@me.com$/のように。ほとんど私の心を壊す。プログラミングの観点から私ください)

+0

この投稿を見てくださいhttps://stackoverflow.com/a/46181/8298495 –

答えて

3

を助け、あなたは自分の電子メールの文字列terminates@google.com持つか@me.comだけにして、あなたの正規表現を実行するか否かをチェックすることによって開始する必要があります。

これはあなたの時間を節約します:regexpはあなたが知っているすべての一般的なメールフォーマットの正規表現になり、いつでもドメインフィルタを追加できます(終端ドメインを配列または設定...)。

CPUの使用量も大幅に削減されています。これらのチェックを連続して実行し、たくさんの電子メールをフィルタリングする必要がある場合は、ダミー文字列の比較が正規表現よりも高速です。正規表現での電子メールアドレスを検証


var emails = ['[email protected]', '[email protected]', 'hacker";DROP TABLES;@me.com' ]; 
 
var domains = ['gmail.com', 'me.com']; 
 

 
function validateEmailFormat(email) { 
 
    return /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(email) 
 
} 
 

 
function validateEmailDomain(email) { 
 
    for (i in domains) { 
 
\t if (email.endsWith('@'+domains[i])) { 
 
\t  return true; 
 
\t } 
 
    } 
 
    return false; 
 
} 
 

 
for (i in emails) { 
 
    email = emails[i]; 
 
    if (validateEmailDomain(email) && validateEmailFormat(email)) { 
 
\t console.log('OK for '+email); 
 
    } else { 
 
\t console.log('NOT OK for '+email); 
 
    } 
 
}

+0

これは 'return/^ \ w +([ (文字列)&& /@outlook\.com$|@(*。\ w +)*(\。\ w +)*私\ .com $ /。テスト(文字列) '? – RoGGeR

+0

いいえ、私はあなたに擬似コードの例を書いてみましょう – Fabien

+0

ありがとう!私は待っています – RoGGeR

1

トリッキーなものです。私はあなたがほんの少しのものを単純化する特定のドメインを許可したいと思うかどうか推測します。

\[email protected](google|me)\.com$ 

@\w+が単純化された上で、もちろんです:ような何かは、トリックを行うことができます。これをあなたが必要とするものに展開してください...

関連する問題