2016-11-29 93 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>

相关问题