1

私はJavaScriptを学ぼうとしています...私は次のような機能を持っています、私はフォーマットユーザーIDフィールドを取ります...これはメールアドレスであり、それが以下の条件に一致するかどうかをチェックしようとします。ただし、ユーザー名> 3とドメインをgmail.comとして指定しても、誤った結果が返されます...誰かがifループに入る理由を確認して教えてもらえますか、テキストをトリミングする必要がありますか?なにか。

また、jQueryを使用してこれを効果的に作成する方法を教えていただければ、学習に役立ちます。しかし、私がここで2つのことを混ぜ合わせていると思うなら、私の優先順位は上記の最初の質問です。

function isValidate(eltt) {

    var flag      = true;
    var upos      = eltt.indexOf("@");
    var uendpos   = eltt.indexOf(".com");
    var totlength = eltt.length;
    var domain    = eltt.slice(upos,totlength);


    if ( upos < 3 | domain!="gmail.com" | uendpos=== -1) {
        flag=false;
    }

    return flag;
}
4

1 に答える 1

1

まず、問題は、の|代わりにを使用していることです||。(これ|はビット単位のorであり、この場合、条件のバイナリ表現のビットを組み合わせることにより、基本的にランダムな結果が得られます。おそらく、必要になることはありません|。したがって、それ自体で何かを行う||ことさえ忘れてください。)|

次に、この検証は正規表現を使用すると簡単になります。

if (!eltt.match(/^.{3,}@gmail\.com$/)) {
  return false;
}

つまり、(^)で始まり、少なくとも3文字で始まり.{3,}、その後にリテラルテキストが続き、その後に@gmail.comは何もありません($)。

于 2012-07-01T01:33:15.503 に答える