2016-11-29 90 views
0

我有一個形式與類型的電子郵件遞交了輸入和一個提交按鈕。上下文是當用戶從登錄頁面點擊'忘記密碼'時,這個特定的表單將顯示在用戶可以輸入他們的電子郵件ID並獲得通過郵件重置密碼的鏈接。HTML5電子郵件輸入型接受無效郵件ID

一切正常,除了輸入型電子郵件精細接受ABC @ COM這裏,因爲我想的電子郵件ID是[email protected]。問題是,如果用戶錯誤地鍵入abc @ com而不是[email protected],他們將不會收到重置密碼鏈接,並且他們也不會意識到出錯了。

我希望得到這個問題的解決方案。

+3

你需要驗證的電子郵件地址 - 但請注意,根據.abc的「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

僅僅因爲你驗證電子郵件地址並不意味着他們會做對。你只是覆蓋了他們可能犯的許多可能的錯誤之一。 : - / – RobG

回答

0

使用正則表達式的一些像這樣的Regex demo/\b(\w+)(\@)(.*)(\.)(\w+)\b。其檢查與@.下一個地方在您的字符串。 \b它將設置字邊界,配以特定的一個

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>

相關問題