我必须进行电子邮件验证,确认电子邮件地址必须以字符串后跟“@”开头,然后是另一个带有Javascript的字符串。
有人能告诉我怎么样?
我使用了这段代码,但如果我只使用点符号而不是每个字符都会给我一个错误。
var email=document.forms["subscriptionForm"]["email"].value;
var atCharacter = email.indexOf("@");
var dotCharacterAfterAt = email.indexOf('.', atCharacter + 1);
var dotLastCharacter=email.indexOf('.', atCharacter - 1);
var dotPosition=email.lastIndexOf(".");
if (atCharacter < 1 || dotPosition < atCharacter+2 || dotPosition + 2 >= email.length) {/* I got this code from http://www.w3schools.com/js/js_form_validation.asp */
alert("Incorrect E-Mail address");
return false;
}
if (email[0] == '.'){
alert("You can't enter a dot character as a first character")
return false
}
if (email==null || email=="") {
alert("E-Mail must be filled out !");
return false;
}
if(atCharacter + 1 == dotCharacterAfterAt){
alert("You must enter a string after the @ sign");
return false;
}
if (atCharacter - 1 == dotLastCharacter){
alert("You must not enter a string before the @ sign in your address");
return false;
}
if (dotPosition == email.length - 1) {
alert("You must not enter a dot as a last character in your address");/* an error will occur and tells you that you must not enter a "." character as a last character in your address*/
return false;
}
答案 0 :(得分:0)
var email = 'string@string';
/[^@]+@[^@]+/.test(email); // returns true;
上述内容完全符合您的要求。但是,我不认为您提出的问题足以验证电子邮件地址。我建议只使用validator库,如下所示:
<script type="text/javascript" src="validator.min.js"></script>
<script type="text/javascript">
validator.isEmail('foo@bar.com'); //=> true
</script>
这个库不仅仅是一个你可能会觉得有用的电子邮件验证。
答案 1 :(得分:0)
var email_pat=/^([0-9a-zA-Z]+([_.-]?[0-9a-zA-Z]+)*@[0-9a-zA-Z]+[0-9,a-z,A-Z,.,-]*(.){1}[a-zA-Z]{2,4})+$/;
//id is the email text box id
var val=$('#'+id).val();
if(val.match(email_pat)==null && val!='')
$('#'+id).addClass('error');
这应该有用。
答案 2 :(得分:0)
尝试这段简单的代码:
var email = prompt('Enter your Email');
var re = /[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}/igm;
if (email == '' || !re.test(email))
{
alert('Invalid email address.');
}
else {
alert('Thank You, the email is valid!');
}
<强> DEMO here 强>
答案 3 :(得分:-1)
对于在其中间某处只包含一个@
的任何字符串,这将返回true:
function could_be_email_address(email) {
return email.split('@').length >= 2;
}
老实说,这就是你需要做的一切。有效的电子邮件地址可以在RFC @
之前包含任何内容:
本地部分必须仅由指定的主机解释和分配语义 域名的一部分。
http://tools.ietf.org/html/rfc5321
之后的部分甚至不需要.
。所以,尽管这是正确的答案,但这是正确的答案。
有关详细信息,请http://davidcel.is/blog/2012/09/06/stop-validating-email-addresses-with-regex/