js验证email的正则

yizhihongxing

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日

相关文章

  • Javascript数组方法reduce的妙用之处分享

    关于“Javascript数组方法reduce的妙用之处分享”的完整攻略,我将从以下几个方面进行讲解: 什么是reduce方法 reduce方法的用法和语法 reduce方法的妙用之处 两个示例说明 1. 什么是reduce方法 reduce() 是一种 Javascript 数组方法,用于迭代数组中的所有元素,并通过一个函数返回单个值。这个函数接受四个参数…

    JavaScript 2023年5月27日
    00
  • JavaScript实现求最大公共子串的方法

    JavaScript实现求最大公共子串的方法 简介 最大公共子串(Longest Common Substring)是指两个或多个字符串中都出现的最长子串。在文本编辑、DNA序列比对和音频处理等领域都有广泛应用。 在JavaScript中,可以使用动态规划(Dynamic Programming)的方法来实现求最大公共子串的功能。动态规划是一种逐步递进的算法…

    JavaScript 2023年5月28日
    00
  • javascript阻止浏览器后退事件防止误操作清空表单

    下面我将详细讲解如何使用JavaScript阻止浏览器后退事件,以防止误操作清空表单。 什么是阻止浏览器后退事件? 在浏览器中,当我们按下”后退”按钮或点击浏览器的返回箭头时,浏览器会自动回退到上一个页面,这就是浏览器的后退事件。 但是,在某些情况下,我们不希望用户回退到上一个页面,比如在填写表单时,用户误操作点击了后退按钮,导致表单数据丢失。此时,我们可以…

    JavaScript 2023年6月11日
    00
  • 自己写一个uniapp全局弹窗(APP端)

    下面是详细讲解如何自己写一个uniapp全局弹窗(APP端)的完整攻略。 1. 准备工作 在开始之前,需要先确定以下几点: 确定弹窗的样式和内容,包括弹窗的尺寸、背景色、字体等; 确定弹窗的触发方式,比如是否需要点击按钮或者触发特定事件; 确定弹窗的位置,比如是否需要固定在屏幕底部或者居中展现。 2. 实现步骤 实现全局弹窗的基本步骤如下: 在 App.vu…

    JavaScript 2023年6月11日
    00
  • js校验表单后提交表单的三种方法总结

    JS校验表单后提交表单有三种方法总结,分别是: 1.提交前在JS验证,如果无误则提交。 2.在提交按钮上绑定函数,在函数中判断表单是否填写正确。 3.在表单提交时,拦截表单提交请求,验证表单数据后提交。 下面我将会对上述每个方法进行详细讲解,并提供示例: 1.提交前在JS验证,如果无误则提交 这个方法是最基本的方法,它的核心是在提交表单之前进行验证。我们可以…

    JavaScript 2023年6月10日
    00
  • 替代window.event.srcElement效果的可兼容性的函数

    替代window.event.srcElement的可兼容性函数,可以使用event.target属性来获取触发事件的元素。但是需要注意的是,此方法在IE8及以下版本不兼容,需要做兼容处理。 下面是完整的攻略,包含两条示例说明: 1. 使用event.target属性获取元素 使用event.target属性可获取触发事件的元素,示例如下: function…

    JavaScript 2023年6月10日
    00
  • js 事件对象 鼠标滚轮效果演示说明

    下面是关于“js 事件对象 鼠标滚轮效果演示说明”的完整攻略。 什么是事件对象 事件对象是处理事件的一种机制,通过事件对象可以获取事件的相关信息,包括事件类型、目标元素、鼠标坐标等。 当事件发生时,浏览器会自动生成一个事件对象,可以通过参数的方式将该事件对象传递给事件处理函数,在事件处理函数中就可以访问该事件对象。 以下是事件对象的一些常见属性: type:…

    JavaScript 2023年6月10日
    00
  • HTML+JavaScript模拟实现简单的时钟效果

    下面是HTML+JavaScript模拟实现简单的时钟效果的攻略: 准备工作 首先需要编写一个HTML页面,里面包含用于显示时钟的元素,可以是一个<div>、<span>等等。其中,我们可以用CSS设置时钟的样式,比如字体大小、颜色、边框等。 编写JavaScript代码 获取当前时间 JavaScript提供了Date()对象,可以…

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