正则表达式匹配邮箱账号

2023-10-31

现在许多网站都采用了通过邮箱账号来注册用户名的方式,一来可以避免重复,而来安全性也得到保证,一举两得,很不错。


而最近HCI的官网也要重构了,部门一女生在写注册信息的表单验证的时候遇到了许多问题,其中一个就是邮箱的验证。


老实说,一开始俺就觉得邮箱验证本身就不难,不就一个正则表达式的匹配问题么,自己不会写也可以去网上找到啊。


可是等看了妹子在网上找到的邮箱正则匹配的代码之后,我自己也去谷歌了一下,发现好多所谓的“网友”写的匹配式真的是漏洞百出。没有一个符合我自己的要求的(可能我太严格了= =),于是我就打算花上个十几分钟写个匹配邮箱的正则表达式。


说实话,做跟说完全是两码事,本来我以为这么一个表达式也就几分钟的事情,结果愣是让我耗上了快半个多小时。现在让我来总结一下我遇到的问题。


a)邮箱地址后缀是提供邮箱服务商的域名后缀(也就是符号”@“后面的内容),千奇百怪,而且很多域名后缀也在不断的更新,无法做到绝对匹配,所以我这里也无能为力

b)对于符号“@”前面的字段,我们是有足够把握做到绝对的匹配的,因为事实上要验证的规则”不多“

c)为什么”不多“加了引号呢?因为其实规则真心挺多的。首先,不同的邮箱服务提供商对自己的邮箱命名规则就没有一个统一的标准。163邮箱允许字母+数字+下划线,而对下划线的个数已经重复方式也没有严格规定,所以也就导致了有类似于“a______v@163.com”这样的邮箱地址。而谷歌邮箱更是奇葩,它居然不支持下划线,却支持英文句点“.”,如果你不介意,你完全可以注册一个类似于“a.b.c.d.e.f@gmail.com"的邮箱。所以,邮箱格式的多样化就造成了正则表达式可能会比较复杂。

d)不过好消息是,无论是国内的163还是国外的谷歌,都不允许符号字符开头或结尾。这给了我们一个十分良好的信息。因为那样我们就可以放心地关注字符串中间的那些字符的匹配了(因为开头和结尾必定是数字或字母)。

e)网上许多网友写的邮箱正则表达式都很不严谨,居然能匹配到"___a___@163.com""abc@kkk.com.com.com.com"这类奇葩的邮箱地址。这是我不能忍受的。


综上所述,我纠结了半个多小时之后终于将比较严谨的正则表达式憋出来了:

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


总结:本人乃小菜一颗,上述的表达式纯属个人见解,若各位大神有更好的匹配式,欢迎指点。PS:对于邮箱的域名后缀的匹配本人实在无能为力,如果有知道如何解决的大神,请赐教,感激不尽!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

正则表达式匹配邮箱账号 的相关文章

  • JAVA 正则表达式 (超详细) .

    在Sun的Java JDK 1 40版本中 Java自带了支持正则表达式的包 本文就抛砖引玉地介绍了如何使用java util regex包 可粗略估计一下 除了偶尔用Linux的外 其他Linu x用户都会遇到正则表达式 正则表达式是个极
  • 常用数字电路模块之三:计数器与分频器(二))

    三 分频电路 1 简单的计数器 计数器实质是对输入的驱动时钟进行计数 所以计数器在某种意义上讲 等同于对时钟进行分频 例如一个最大计数长度为N 2 n 从0计数到N 1 的计数器 也就是寄存器位数位n 那么寄存器最高位的输出为N 2 n分频
  • 【JAVA】正则表达式是啥?

    个人主页 个人主页 系列专栏 初识JAVA 文章目录 前言 正则表达式 正则表达式语法 正则表达式的特点 捕获组 实例 前言 如果我们想要判断给定的字符串是否符合正则表达式的过滤逻辑 称作 匹配 可以通过正则表达式 从字符串中获取我们想要的
  • Jmeter参数化--后置处理器之正则表达式提取器

    在接口测试中 很多都需要依赖前一个请求的响应数据放到后一个请求的请求数据中来 在Jmeter中提供了正则表达式提取器来提取响应数据中的片段 本次使用的实例是微信公众号的客服发消息 在这个接口中 需要用到access token接口返回的to
  • 常用js

    1 去掉字符串两端的空格 对字符串去两端空格 function stringTrim str if str null str undefined return null 用正则表达式将前后空格 用空字符串替代 return str repl
  • Java正则工具类:字母数字下划线、数据库url校验等

    文章目录 前言 一 正则基础语法 二 正则工具类 总结 前言 本文内容观摩的是其他作者的代码 在基础上增加修改了一些 参考原文地址 java用正则表达式 提示 以下是本篇文章正文内容 下面案例可供参考 一 正则基础语法 字符 描述 匹配输入
  • IDEA正则表达式高级替换

    1 需求 需要将如下注释转换成另外一个形式 员工姓名 private String name 员工姓名 private String name 2 在idea中输入正则表达式进行快速替换 3 具体的正则表达式如下 替换前正则 替换后正则 1
  • 【PAT乙级】旧键盘打字

    题目描述 旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及坏掉的那些键 打出的结果文字会是怎样 输入格式 输入在 2 行中分别给出坏掉的那些键 以及应该输入的文字 其中对应英文字母的坏键以大
  • Java使用 java.util.regex.Pattern 正则表达式校验参数值是否规范

    场景 java中我们可以利用 Pattern 注解对某个入参进行规则校验 但有些特殊参数在接口入口处不方便校验 需要在代码中校验 一 使用 Pattern 注解校验 Pattern regexp a zA Z0 9 message xxx号
  • SparkSQL HiveSQL 常用正则表达式

    SparkSQL HiveSQL 常用正则表达式 目录 SparkSQL HiveSQL 常用正则表达式 1 匹配汉字 2 匹配手机号码 3 匹配身份证 4 SparkSQL HiveSQL 常用正则函数 5 SparkSQL 分组 聚合
  • Pattern.compile的flag参数

    Pattern compile函数 Pattern Pattern compile String regex int flag regex为正则表达式 flag的取值范围如下 Pattern CANON EQ 当且仅当两个字符的 正规分解
  • 爬虫入门_3:数据解析及案例实战

    聚焦爬取 爬取页面中指定的页面内容 编码流程 指定url 发起请求 获取响应数据 数据解析 持久化存储 数据解析分类 正则 re M 多行匹配 re S 单行匹配 bs4 xpath 数据解析原理概述 解析的局部的文本内容都会在标签之间或者
  • Java正则表达式详解

    1 1 正则表达式的概念以及演示 正则表达式可以用一些规定的字符来制定规则 并用来校验数据格式的合法性 正则表达式就是用来验证各种字符串的规则 它内部描述了一些规则 我们可以验证用户输入的字符串是否匹配这个规则 正则表达式是一种强大的校验机
  • re模块----你也可以玩得很溜正则表达式

    目录 re模块 compile pattern flags 0 flag匹配模式 match pattern string flags 0 search pattern string flags 0 findall pattern stri
  • 知道这20个正则表达式,能让你少写1,000行代码

    正则表达式 一个十分古老而又强大的文本处理工具 仅仅用一段非常简短的表达式语句 便能够快速实现一个非常复杂的业务逻辑 熟练地掌握正则表达式的话 能够使你的开发效率得到极大的提升 正则表达式经常被用于字段或任意字符串的校验 如下面这段校验基本
  • 【Linux命令—shell】正则表达式

    正则表达式 regular expression 描述一个字符集合的表达方式 模糊匹配 目录 1 基本正则 2 扩展正则 3 兼容的正则 perl 4 综合案例练习 1 基本正则 演示如下 2 扩展正则 注意 grep不支持扩展正则 如果需
  • 中文姓名、电话、邮箱的正则表达式

    1 中文姓名 如 张三 噶及 洛克业 a zA Z0 9 u4e00 u9fa5 1 10 2 电话验证 如 010 85369999 186199999 0 d 2 3 d 7 8 d 3 5 13 14 15 18 17 d 9 3 电
  • 元字符的详细解析

    上一篇文章介绍了正则的用处以及正则中这些元字符的基本含义 但是如果我们只知道那些元字符的含义 不知道怎么使用和加以练习 那么对于正则我们还只是看见了门槛 并没有踏入 那么本篇文章就让我们迈起脚步正式走入正则的世界吧 let s go 我的学
  • 正则校验手机号

    正则表达式可以用来校验手机号码的合法性 如果你想使用正则表达式来校验中国大陆的手机号码 可以使用如下的正则表达式 1 3 9 d 9 这个正则表达式可以匹配所有 13 到 19 开头的 11 位数字 即所有中国大陆的手机号码 例如 如果你想
  • 正则表达式的资源

    https www regular expressions info index html https regex101 com

随机推荐

  • 开启network-manager.service

    ubuntu20 04 本身系统会默认开机自动连接网络服务 但是我之前自己设置关闭了 所以现在要手动打开使用一下命令 先进入root xxz sudo systemctl start network manager service 回车执行
  • 《一》HI3518E视频处理基础知识----- 系统控制mpp

    目录 一 MPP的概述 1 视频方面 2 音频方面 3 MPP所处层次框架图 二 mpp处理平台架构 三 视频缓存池 1 视频缓冲池 VB 2 要点 3 相关的数据结构和API 1 VB CONF S 2 HI MPI VB SetConf
  • 家谱(特殊的层级人物关系)数据结构与自动排版算法的一种实现

    github源代码 家谱海本地私有版 https github com fengchangfight familytreesea 出处 http www fengchang cc post 24 家谱的数据结构并不复杂 逻辑上可以抽象成一种
  • BES2300x笔记(28) -- 左右耳同时按下的骚操作

    哈喽大家好 这是该系列博文的第二十八篇 篇 lt lt 系列博文索引 快速通道 gt gt 一 前言 市面上的TWS耳机 一般中高端耳机都会有触摸按键和入耳检测功能 使用触摸按键更方便外观和防水处理 但同时也限制了UI交互方式 有限的交互方
  • eclipse快速打开和闭合函数方法代码块的快捷方式

    ctrl shift 小键盘 收起和ctrl shift 小键盘 闭合
  • 基于深度学习的变化检测算法实现

    我是研究生期间研究主要研究SAR影像的变化检测 这是一段简单的基于深度学习的变化检测方法 以CNN实现 首先说下基于深度学习的变化检测任务的思路 制作训练样本 gt 训练模型 gt 使用训练的模型遍历图片中每个像元得出结果 1 筛选训练样本
  • spring.ftl

    lt ftl strip whitespace true gt lt spring ftl This file consists of a collection of FreeMarker macros aimed at easing so
  • css中垂直对齐常用的几种方法

    一 行高 line height 法 如果要垂直居中的只有一行或几个文字 那它的制作最为简单 只要让文字的行高和容器的高度相同即可 比如 p height 30px line height 30px width 100px overflow
  • Angularjs理解二

    1 dom加载完毕 找寻ng app 先从上到下找相关的指令 然后分两阶段执行 先找到所有的指令 完成编译 得到一个个链接函数 最后在链接到一个个controller上 还是边编译边链接 先执行 injector invoke rootSc
  • 光耦PC817

    光耦一共4个引脚 两个输入 两个输出 输入接5v和gnd 5v接时加100欧姆电阻 输出不大于35v电压 这时输出端通路 只是通路 不是短路 转载于 https www cnblogs com judes p 5686414 html
  • PCA主成分分析(入门计算+深入解析)(一)

    PCA主成分分析 入门 深入 最大方差理论 几何意义 Principal components analysis 转载请注明 云南省高校数据化运营管理工程研究中心博客http blog csdn net m0 37788308 articl
  • Python解决相对路径问题

    学习Python中 一直被相对路径困扰 只能使用绝对路径 解决方法 加上下面代码 import os sys os chdir sys path 0 这个问题到现在也没有搞清楚 因为在命令行直接敲命令运行py文件可以直接使用相对路径 而我在
  • 浅谈三目运算符(c++)

    目录 什么是三目运算符 三目运算符怎么用 基本用法 进阶用法 注意事项 相关题目 B2035 判断数正负 B2037 奇偶数判断 B2052 简单计算器 什么是三目运算符 三目运算符是分支结构中的一种运算 根据不同的条件 执行不同的操作并返
  • win10家庭版解决无法进入本地组策略编辑器问题

    win10家庭版无法进入本地组策略编辑器 现象 运行框中输入 gpedit msc 提示 Windows找不到文件gpedit msc 解决办法 一 桌面新建一个文本文档 输入以下代码后保存文档 echo off pushd dp0 dir
  • 【华为OD机试真题 Python】最优高铁城市修建方案(200分)

    前言 本专栏将持续更新互联网大厂机试真题 并进行详细的分析与解答 包含完整的代码实现 希望可以帮助到正在努力的你 关于大厂机试流程 面经 面试指导等 如有任何疑问 欢迎联系我 wechat steven moda email nansun0
  • python读取Java配置文件properties配置文件

    python没有专门处理properties格式的包 只有处理标准的ini格式的包 所以需要自己写一个python程序来处理 class Properties object def init self fileName self fileN
  • Hugging Face 的 Transformers 库快速入门 (一)开箱即用的 pipelines

    注 本系列教程仅供学习使用 由原作者授权 均转载自小昇的博客 文章目录 前言 开箱即用的 pipelines 情感分析 零训练样本分类 文本生成 遮盖词填充 命名实体识别 自动问答 自动摘要 这些 pipeline 背后做了什么 使用分词器
  • 网络流(最大流)基础入门

    好不容易大概搞懂了网络流 写个博客巩固一下 盗了点图 请图主原谅 定义 网络流与最大流 网络流是指给定一个有向图 和两个点 源点S和汇点T 点之间有连边 每条边有一个容量限制 可以看作水管 网络流就是指由S点流到T点的一个可行流 最大流就是
  • 金蝶生成凭证模板_【干货】金蝶云ERP教你凭证模版的引入引出

    概述 K 3Cloud凭证模版一直反馈比较多的就是希望可以增加模版引入引出的功能 因为在项目实施过程中 上线前的在测试环境配置过的凭证模板 希望通过凭证模版引入功能轻松移植到正式环境 这样可以快速满足客户要求 缩短实施周期 目前K 3Clo
  • 正则表达式匹配邮箱账号

    现在许多网站都采用了通过邮箱账号来注册用户名的方式 一来可以避免重复 而来安全性也得到保证 一举两得 很不错 而最近HCI的官网也要重构了 部门一女生在写注册信息的表单验证的时候遇到了许多问题 其中一个就是邮箱的验证 老实说 一开始俺就觉得