js验证email的正则

JS验证 Email 的正则表达式是一项很重要的前端技能,本篇攻略旨在帮助想要掌握这项技能的读者们进行学习。

1. 什么是正则表达式

正则表达式是一种特殊的文本字符串,用于在文本中查找、替换和匹配符合某些特定规则的字符串。利用正则表达式可以简化很多复杂的字符串操作,使代码更加简洁高效。

2. 邮箱正则表达式规则

验证Email的正则表达式需要遵循RFC 5322 标准中的规则,其主要原则如下:

  1. Email 由两部分组成,分别为local-part 和 domain-part。其格式应为:local-part@domain-part.tld
  2. local-part仅限制字符A-Za-z0-9.-,也就是说,local-part中允许存在”.”,”-“ 和””三种符号
  3. domain-part和tld都不能包含特殊字符
  4. domain-part最多包含一级和二级域名
  5. 最后一级域名(tld)包含2~6个英文字符

基于以上规则,我们可以得到验证Email的正则表达式:

/^[\w-]+(\.[\w-]+)*@[a-zA-Z0-9]+([_-]?[a-zA-Z0-9])*((\.[a-zA-Z]{2,6}){1,2})$/

3. Email正则表达式解析

上面的正则表达式看起来很长,有一点点难理解,下面我将一步一步地解析正则表达式的含义。

/^ 开始符号,表示正则表达式的开始。

[\w-]+ 匹配字符集合,包含A-Za-z0-9.-_,+表示匹配至少一次。

(\.[\w-]+)* 匹配下一个字符集合,也就是“.”后面的字母集合,并加上前缀“\”。由于一个Email地址中可以有多个“.”,因此使用“*”表示匹配0个或多个。

@ 匹配字面值,只能匹配一个“@”字符。

[a-zA-Z0-9]+ 匹配由a-z、A-Z 和 0-9 组成的字符串,+表示匹配至少一次。

([_-]?[a-zA-Z0-9])* 匹配同上,但允许在前面增加-和_。

((\.[a-zA-Z]{2,6}){1,2}) 匹配网址的一级和二级域名,正则表达式使用“.”表示“.”的字符。另外,tld的字符长度为2~6,可以将匹配的“.{2,6}”放在“.XXX”中,由于tld最多包含两段,因此使用“{1,2}”。

$ 结束符号,表示正则表达式的结束。

4. 使用示例

接下来,我们将结合两个具体的使用示例来加深对上述正则表达式的理解。

示例1

通过一个简单的表单来验证用户输入的Email地址

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>验证Email的正确性</title>
</head>
<body>
    <form method="post">
        <p>填写Email地址:<input type="text" name="email"></p>
        <input type="submit" value="提交">
    </form>
    <script type="text/javascript">
        var emailReg = /^[\w-]+(\.[\w-]+)*@[a-zA-Z0-9]+([_-]?[a-zA-Z0-9])*((\.[a-zA-Z]{2,6}){1,2})$/;
        var btn = document.getElementsByTagName('input')[1];
        btn.onclick = function() {
        var email = document.getElementsByName('email')[0];
        if (!emailReg.test(email.value)) {
          alert('请输入正确的邮箱地址!');
          return false;
        }
    }
    </script>
</body>
</html>

示例2

获取文本区域内含有的Email地址

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>获取文本区域内含有的Email地址</title>
</head>
<body>
    <div contenteditable="true" id="content" style="height:200px;width:80%;border:1px solid gray;padding:10px;">
        输入Email地址:<strong>email@example.com</strong>
    </div>
    <button onclick=" getEmails()">获取Email地址</button>
    <script type="text/javascript">
        var emailReg = /^[\w-]+(\.[\w-]+)*@[a-zA-Z0-9]+([_-]?[a-zA-Z0-9])*((\.[a-zA-Z]{2,6}){1,2})$/;
        function getEmails() {
          var content = document.getElementById('content').innerHTML;
          var emails = content.match(/[\w-]+(\.[\w-]+)*@[a-zA-Z0-9]+([_-]?[a-zA-Z0-9])*((\.[a-zA-Z]{2,6}){1,2})/g);
          alert('获取到的Email地址:\n' + emails.join('\n'));
        }
    </script>
</body>
</html>

以上就是验证 Email 的正则表达式的完整攻略,希望对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js验证email的正则 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JS正则表达式验证中文字符

    当我们在开发Web应用时,经常需要验证用户输入的数据是否符合规则。JS正则表达式可以轻松地完成数据验证的任务。其中,验证中文字符是很常见的需求之一。下面,我们来详细讲解JS正则表达式验证中文字符的完整攻略。 1. JS正则表达式的基础 JS正则表达式是用于匹配字符串中字符组成模式的表达式。它通过一系列特定的字符和符号定义匹配规则。下面是一些常用的JS正则表达…

    JavaScript 2023年5月19日
    00
  • document.cookie 使用小结

    我们来详细讲解一下 document.cookie 的使用小结。 一、概述 document.cookie 属性是用于读取和设置 Cookie 的,它可以让我们在客户端存储非常小且不敏感的数据。document.cookie 属性返回所有 cookie 名称及其对应值。但请记住,document.cookie 属性不是一个数组,而是一个字符串,而且无法支持删…

    JavaScript 2023年6月11日
    00
  • 微信小程序之仿微信漂流瓶实例

    以下是“微信小程序之仿微信漂流瓶实例”的完整攻略。 1. 确定需求及设计界面 首先需要确定需要开发的功能及设计的界面。在这个实例中,需要实现类似微信的漂流瓶功能,用户可以扔出漂流瓶,也可以捡到漂流瓶并回复。设计的界面需要包含扔出漂流瓶、捡到漂流瓶、显示漂流瓶详情及回复等功能。 2. 创建项目 在微信开发者工具中创建一个新的小程序项目,并填入相应的AppID。…

    JavaScript 2023年6月11日
    00
  • 用函数式编程技术编写优美的 JavaScript_ibm

    用函数式编程技术编写优美的 JavaScript – 完整攻略 函数式编程是一种将计算机程序视为数学函数的编程范式。在这种编程方式下,函数被视为是数据流变换的原子操作,程序的执行就是一个函数接受输入并返回输出的过程。由于函数式编程减少了状态变量的使用,可以使得代码更加简洁、易读、易维护。 在 JavaScript 中,函数式编程几乎可以应用于所有方面。本文将…

    JavaScript 2023年5月19日
    00
  • JavaScript正则表达式exec/g实现多次循环用法示例

    一、JavaScript正则表达式exec/g基础语法 JavaScript正则表达式是用来匹配字符模式的。exec/g是JavaScript正则表达式测量效率上优秀的方法,可以实现多次循环用法。下面是exec/g语法的具体用法: RegExp对象.exec(字符串); RegExp对象是指正则表达式对象。 执行exec()方法时需要输入要匹配的字符串作为参…

    JavaScript 2023年6月10日
    00
  • Vue nextTick延迟回调获取更新后DOM机制详解

    当 Vue.js 更新数据时,除了更新数据对象本身,Vue.js 还需要通过 Virtual DOM 进行一系列操作,最终更新真实的 DOM 构造,以反映数据的变化。这个过程需要一定的时间,而且这个过程还不保证在同步代码中立即执行完成。因此,我们可能会在同步代码中尝试获取更新后的 DOM,但却发现 DOM 还没有更新。 在这种情况下,我们可以使用 Vue.n…

    JavaScript 2023年6月11日
    00
  • JavaScript 闭包在封装函数时的简单分析

    JavaScript 中的闭包是一种强大而常用的技术,它可以帮助我们在封装函数时实现高度的抽象和封装性。在本文中,我将为您详细阐述何为 JavaScript 闭包,并且提供两个示例说明闭包在封装函数时的简单分析,希望这篇攻略可以帮助您更好地理解闭包的使用方法。 什么是 JavaScript 闭包? JavaScript闭包是指该函数可以访问其作用域之外的变量…

    JavaScript 2023年6月10日
    00
  • javaScript中定义类或对象的五种方式总结

    下面是详细讲解“JavaScript中定义类或对象的五种方式总结”的完整攻略: 1. 使用对象字面量定义对象 对象字面量是JavaScript中定义对象的一种常用方法。它使用一对大括号{}来定义一个空对象,然后通过对象的属性和方法来描述这个对象。 示例代码: let person = { name: ‘张三’, age: 18, gender: ‘男’, s…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部