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实现扫雷小程序的示例代码

    下面我将详细讲解一下如何使用JavaScript实现扫雷小程序的代码攻略。 1. 如何生成随机雷区 扫雷游戏中随机生成一个雷区是实现游戏的第一步。我们可以通过在二维数组中存储雷区,数组中具体的值表示该格子是否存储雷,如0表示无雷,1表示有雷。 示例代码: function generateRandomField(width, height, minesCou…

    JavaScript 2023年5月27日
    00
  • JavaScript定义类或函数的几种方式小结

    JavaScript 定义类或函数的几种方式有很多,可以根据不同需要来选择。下面将详细介绍常见的几种方式。 1. 使用函数定义 定义一个函数,并且在函数内创建一个对象,最后将这个对象返回,就可以创建一个类。 示例代码如下: function Person(name, age) { this.name = name; this.age = age; } Per…

    JavaScript 2023年5月27日
    00
  • 使用ajax的post同步执行(实现方法)

    使用 AJAX 的 POST 请求同步执行可以使用 jQuery AJAX 方法中的 async 属性,将其设置为 false。 使用 jQuery,可以使用如下代码实现 AJAX 的 POST 请求同步执行: $.ajax({ url: ‘yourUrl’, type: ‘POST’, async: false, data: yourData, succe…

    JavaScript 2023年6月11日
    00
  • JavaScript的查询机制LHS和RHS解析

    JavaScript中存在两种类型的查询机制,即左查询(LHS)和右查询(RHS)。这两种查询机制可以帮助我们理解JavaScript变量的赋值过程。下面详细讲解一下这两种查询机制。 LHS查询 LHS查询通常发生在变量被赋值的时候,这种查询的目的是为了找到变量所在的内存地址,当变量所在的内存地址存在时,就可以把该值赋给变量。如果变量所在内存地址在运行时不存…

    JavaScript 2023年5月28日
    00
  • js获取触发事件元素在整个网页中的绝对坐标(示例代码)

    正常情况下,通过JavaScript获取元素坐标有两种方式:相对于视口的位置(即viewport)和相对于文档的位置。获取相对于整个文档的坐标,也被称为获取元素的绝对坐标。 方法一:使用element.getBoundingClientRect() element.getBoundingClientRect()可以返回元素的大小及其相对于视口的位置。该方法返…

    JavaScript 2023年6月10日
    00
  • 微信小程序实现animation动画

    以下是“微信小程序实现animation动画”的完整攻略: 1. 先了解animation动画 在微信小程序中,我们可以使用wx.createAnimation()方法来创建一个动画对象。这个方法返回的是Animation对象,我们可以使用这个对象来定义一系列动画帧,最后开始执行这些帧达到动画效果。 2. 创建Animation对象 要创建Animation…

    JavaScript 2023年6月10日
    00
  • javascript中10个正则表达式使用介绍基础篇

    JavaScript中10个正则表达式使用介绍基础篇 正则表达式是一种用来匹配字符串模式的工具。在JavaScript中,可以使用正则表达式来对字符串进行匹配、搜索、替换等操作。 本篇攻略将为大家介绍JavaScript中10个常用的正则表达式,让你快速理解和掌握正则表达式的基础知识。 1. 匹配字符 1.1 匹配数字 \d是匹配任意数字的元字符。例如,\d…

    JavaScript 2023年6月10日
    00
  • JavaScript实现简单的文本逐字打印效果示例

    让我来讲解一下“JavaScript实现简单的文本逐字打印效果示例”的完整攻略。 1. 思路分析 要实现文本逐字打印效果,我们首先要思考实现的思路。一种可行的思路如下: 定义一个文本框用于展示要逐字打印的文字内容。 定义一个数组,将要逐字打印的文字内容存入这个数组中。 定义一个计数器,记录已经打印的字数。 定义一个定时器,每隔一段时间(如100毫秒)输出一个…

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