2016-11-29 12 views
0

私は電子メールの入力フィールドと送信ボタンがあるフォームを持っています。状況は、ユーザーがログインページから「パスワードを忘れた」をクリックすると、この特定のフォームが表示され、ユーザーは自分のメールIDを入力し、メールでパスワードをリセットするリンクを得ることができます。HTML5電子メール入力タイプが無効なメールIDを受け入れる

すべてが入力タイプの電子メールを除いて正常に動作します私は電子メールIDが[email protected]になりたいとのABC @コムを受け入れます。問題は、ユーザーが間違って[email protected]の代わりにabc @ comと入力した場合、リセットパスワードのリンクが表示されず、間違ったことが気になることがないということです。

この問題の解決方法をご希望です。

+3

あなたは電子メールアドレスを検証する必要があります - しかし、 'abc @ com'は、 [仕様](https://www.w3.org/TR/html-markup/input.email.html) - 正規表現^ [a-zA-Z0-9。!#$%& '* + /=?^_'{|}~-][email protected][a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$ –

+1

あなたが電子メールアドレスは彼らがそれを正しく得ることを意味しません。あなたは、起こり得る多くの可能性のあるエラーのうちの1つだけをカバーしています。 : - / – RobG

答えて

0

このような正規表現を使用してください。Regex demo/\b(\w+)(\@)(.*)(\.)(\w+)\b.次の場所を文字列に@でチェックしてください。 \bそれはここでは、特定のとの一致1

var check = function(){ 
 
var input = document.getElementById('test').value; 
 
var checking = input.match(/\b(\w+)(\@)(.*)(\.)(\w+)\b/g); 
 
    if(checking){ 
 
    console.log('accepted'); 
 
    } 
 
    else{ 
 
    console.log('reject') 
 
    } 
 
    }
<input type="email" id="test" value="[email protected]"> 
 
<button onclick="check()">validate</button>

0

が簡単なデモで、ワード境界を設定します:

function validate(emailInput) { 
 
    var email = emailInput.value; 
 
    var re = /^(([^<>()\[\]\\.,;:\[email protected]"]+(\.[^<>()\[\]\\.,;:\[email protected]"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; 
 
    console.log((re.test(email))); 
 
}
<form> 
 
    Your email here 
 
    <input type="email" name="myEmail" /> 
 
    <input type="button" value="Send" onclick="validate(myEmail)" /> 
 
</form>

関連する問題