使用JavaScript了解电子邮件验证

Alw*_*ner 7 javascript regex email-validation

我是JavaScript的新手,在互联网上发现了这个JavaScript代码,用于验证给定的电子邮件(代码没有问题) -

<html>
<h2>Email Validation</h2>
<script language = "Javascript">
function checkEmail(emailId) {
if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(emailId)){
document.write("You have entered valid email.");
return true;
}    
return false;
}

function ValidateEmail(){
    var emailID=document.form.email;

    if ((emailID.value==null)||(emailID.value=="")){
        alert("Please Enter your Email ID")
        emailID.focus()
        return false
    }

    if (checkEmail(emailID.value)==false){
        emailID.value=""
        alert("Invalid Email Adderess");
        emailID.focus()
        return false
    }
        alert('valid');
        return true
 }
</script>

<form name="form" method="post" onSubmit="return ValidateEmail()">    
Enter an Email Address : <input type="text" name="email" size="30"><br>    
<input type="submit" name="Submit" value="Submit">    
</form>

</html>
Run Code Online (Sandbox Code Playgroud)

我对代码没有任何问题,但我无法理解正则表达式的/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/含义.我不明白正则表达式的每一部分是什么意思.请赐教.

Sid*_*qui 15

  1. 两个正斜杠/.../包含一个正则表达式.

  2. 前导^和尾随$分别匹配输入字符串的开头和结尾.也就是说,整个输入字符串应与此正则表达式匹配,而不是与输入字符串的一部分匹配.

  3. \ w +匹配1个或多个单词字符(az,AZ,0-9和下划线).

  4. [.-]匹配字符.要么 -.我们需要使用.代表.作为.在regexe中有特殊意义.\ \称为转义码,它恢复以下字符的原始字面含义.

  5. [.-]?匹配[.-]的0或1次出现.

  6. 同样,\ w +匹配1个或多个单词字符.

  7. ([.-]?\ w +)*匹配0次或多次[.-]?\ w +.

  8. 子表达式\ w +([.-]?\ w +)*用于匹配电子邮件中的用户名,在@符号之前.它以至少一个单词字符(az,AZ,0-9和下划线)开头,后跟更多单词字符或.要么 -.但是,一个.或 - 必须跟一个单词字符(az,AZ,0-9和下划线).也就是说,字符串不能包含".."," - ",".-"或" - .".有效字符串的示例是"a.1-2-3".

  9. @匹配自己.

  10. 同样,子表达式\ w +([.-]?\ w +)*用于匹配电子邮件域名,其格式与上述用户名相同.

  11. 子表达式.\ w {2,3}匹配a.后跟两个或三个单词字符,例如".com",".edu",".us",".uk",".co".

  12. (.\ w {2,3})+指定上述子表达式应出现一次或多次,例如".com",".co.uk",".edu.sg"等.

参考