3

多くの人が以前に同様の開発タスクを行ったことがあると思います。

@tomtom.com または @stream.com のみに一致するかどうか、人々のメールアドレスを確認したいと思います。

現在、私は2つの解決策を考えています。

  1. indexof()機能の使用

    var checkTomTomEmail=eo.data.username.indexOf("@tomtom.com");
    var checkStreamEmail=eo.data.username.indexOf("@stream.com");
    
    
    if (checkTomTomEmail >0 || checkStreamEmail >0 )
    {
        //Run the login code
    }
    
    
    Else 
    {
        //Please login with your tomtom or stream email 
    }
    
  2. マッチの使用

    var patt1=/@tomtom.com/gi;
    var patt2=/@stream.com/gi;
    var checkTomTomEmail=eo.data.username.match(patt1);
    var checkStreamEmail=eo.data.username.match(patt2);
    
    
    if(indexOf(checkTomTomEmail)> 1 ||indexOf (checkStreamEmail)>1)
    {
        //Login 
    }
    

私はまだすべての詳細をまだ考慮していないと思います。助言がありますか?
ありがとう

4

2 に答える 2

3

おそらく、人々がこれら 2 つのアドレスの電子メールの入力のみを許可されている場合は、ユーザー名のみを収集し、ラジオボタンを使用して @tomtom.com または @stream.com を選択できるようにする必要があります。

それでもJavaScriptルートに行きたい場合は、正規表現を単一のステートメントに組み合わせることができます

var emailPatt=/@(tomtom|stream).com/gi;

if(emailPatt.test(eo.data.username))
{
    //Login 
}
于 2010-09-24T10:23:49.940 に答える
2

これはどう...

var emailRegex = /^([0-9a-z])+@(tomtom|stream)\.com$/ig;
if (emailRegex.test(emailRegex)) {
    // Login
}

.match(...) を実行する代わりに、文字列が返されます。.test(...) を実行して、何かが一致するかどうかを確認できます。

このパターンは、次のことを保証します。

  1. 電子メール アドレスの「ユーザー名」の部分には、少なくとも 1 文字が必要です (たとえば、a@stream.com)。
  2. ユーザー名は数字またはアルファベットで構成する必要があります (大文字/小文字 - 末尾の /i により問題ありません)
  3. 入力には、先頭または末尾のスペースを含まない完全な電子メール アドレスが含まれている必要があります。たとえば、「 user@tomtom.com 」は失敗し、「user@tomtom.com」のみを受け入れます。)

これをさらにカスタマイズするには、ユーザー名が 3 文字以上である必要があること、電子メール アドレスにアンダースコアまたはダッシュを使用できることなどを確認します。

あなたの質問に答えるために、両方のソリューションは機能しません。理由:

  1. ユーザーは「tom@tomtom.com Hello」と入力すると、両方の検証に合格します。
  2. 特にソリューション #2 では、ドット「.」正規表現で予約された文字です。これは、何にでも一致することを意味するため、ユーザーが「@tomtom1com」と入力すると、合格します...

正規表現の詳細: http://www.regular-expressions.info/reference.html

于 2010-09-24T11:27:50.323 に答える