javascript - 了解使用 JavaScript 进行电子邮件验证

标签 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>

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

最佳答案

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

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

  3. \w+ 匹配 1 个或多个单词字符(a-z、A-Z、0-9 和下划线)。

  4. [.-] 匹配字符 。要么 -。我们需要使用 .代表 .作为 。在正则表达式中具有特殊含义。\被称为转义码,它恢复了后面字符的原始字面意义。

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

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

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

  8. 子表达式\w+([.-]?\w+)* 用于匹配电子邮件中 ​​@ 符号之前的用户名。它至少以一个单词字符(a-z、A-Z、0-9 和下划线)开头,后跟多个单词字符或 .要么 -。然而,一个。 or - 后面必须跟一个单词字符(a-z、A-Z、0-9 和下划线)。即字符串不能包含“..”、“--”、“.-”或“-.”。有效字符串的示例是“a.1-2-3”。

  9. @匹配自身。

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

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

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

Reference

关于javascript - 了解使用 JavaScript 进行电子邮件验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15017052/

相关文章:

javascript - 如何在 JavaScript 中验证电子邮件地址?

php - filter_var($email, FILTER_VALIDATE_EMAIL) 在 if 条件下不起作用

javascript 日期初始化日期会产生错误的日​​期

javascript - Object.prototype 不工作,但 Object.__proto__ 工作,为什么?如何使我的代码在所有浏览器中工作?

javascript - 在私有(private) channel 上发送 Pusher 事件

java - 解析由 | 分隔的单词

删除字符串中的单个字符

python - 使用正则表达式匹配文字记录中的姓名、对话和 Action

javascript - jquery - 检查文件是否相同

C# Prepared Statements - @sign (at/strudel sign) 查询