当前位置: 首页 > news >正文

邮箱的正则表达式

一、 背景

项目中要给用户发送邮件,这时候需要校验用户输入的邮箱的有有效性,这肯定用正则呀。
虽然没有统一的邮箱账号格式,但是所有邮箱都符合“名称@域名”的规律。对于名称和域名的字符限制,我们可以根据项目的情况定义一个,比如只允许有英文、数字、下划线等组成。

二、实例1:只允许英文字母、数字、下划线、英文句号、以及中划线组成

例如zhagnfsan-01@qq.com,这也是我们常见的邮箱格式,

2.1、名称的组成部分(zhagnfsan-01)
  • 26个大小写英文字母表示为a-zA-Z
  • 数字表示为0-9
  • 下划线表示为_
  • 中划线表示为-

由于名称是由若干个字母、数字、下划线和中划线组成,所以需要用到+表示多次出现

  • 根据以上条件得出邮件名称部分表达式:[a-zA-Z0-9_-]+
2.2、域名的组成部分(qq.com)

域名是有多级域名的,比如"三级域名.二级域名.顶级域名",比如“qq.com”、“www.qq.com”、“mp.weixin.qq.com”、“163.com”,这样域名也是有规律的,那就是“XX.XX.XX”,就是由第一个”XX“拼接上多个“.XX”的规律。
这样,又可以江域名分为两部分来看,首先是第一个XX,可以表示为[a-zA-Z0-9_-]+;然后是后面重复的".XX",一个“.XX”可表示为.[a-zA-Z0-9_-]+,多个的话就是(.[a-zA-Z0-9_-]+)+

综上所述,域名部分可以表示为[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+

2.3、完整的正则

最终表达式:由于邮箱的基本格式为“名称@域名”,需要使用“^”匹配邮箱的开始部分,用“$”匹配邮箱结束部分以保证邮箱前后不能有其他字符,所以最终邮箱的正则表达式为:

^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$

三、实例2:名称允许汉字、字母、数字,域名只允许英文域名

现在用中文命名的邮箱也合法了,所以会有这样的邮箱:张三@lenovo.com.cn

3.1、名称的组成部分
  • 26个大小写英文字母表示为a-zA-Z
  • 数字表示为0-9
  • 汉字在正则表示为[\u4e00-\u9fa5]

邮件名称部分表达式:[A-Za-z0-9\u4e00-\u9fa5]+

3.2、域名的组成部分

根据前面分析,得出域名部分的表达式为[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+

3.3、完整的正则

最终表达式:我们用@符号将邮箱的名称和域名拼接起来,因此完整的邮箱表达式为

^[A-Za-z0-9\u4e00-\u9fa5]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$

http://www.lryc.cn/news/325158.html

相关文章:

  • blender插件笔记
  • 解释关系型数据库和非关系型数据库的区别
  • YAML-02-yml 配置文件 java 整合使用 yamlbeans + snakeyaml + jackson-dataformat-yaml
  • 【综述+LLMs】国内团队大语言模型综述:A Survey of Large Language Models (截止2023.11.24)
  • 开始喜欢上了runnergo,JMeter out了?
  • LLM - 大语言模型的分布式训练 概述
  • Spring Cloud Alibaba 整合Seata分布式事务
  • unity 多屏幕操作
  • 4、Jenkins持续集成-用户权限和凭证管理
  • K8s-网络原理-中篇
  • vue基础——java程序员版(vue路由)
  • 【vue3学习之路(一)】
  • 基于Spring Boot网络相册设计与实现
  • 6 Spring-AOP
  • 这回轮到鸿蒙禁用安卓了!!!
  • Java问题详解
  • Go——指针和内存逃逸
  • PTA L2-032 彩虹瓶
  • Spring和Spring Boot之间的区别
  • 海外客户获取难?海外云手机助力电商引流!
  • 什么情况下 C++ 需要垃圾处理机制?
  • 流畅的 Python 第二版(GPT 重译)(七)
  • vue项目中使用vue-pdf或pdf.Js,实现在页面上预览pdf内容
  • 为什么静态成员函数不能是虚函数
  • python环境移植(本机windows到离线windows环境)
  • 蓝桥杯day9刷题日记
  • 阿里云数据库Cassandra的产品价格
  • 离散制造企业MES与流程企业MES的区别
  • 中国象棋C++
  • 记录一下目前为止的算法成长