用正则表达式校验手机号和邮箱

用正则表达式校验手机号和邮箱

在现代互联网时代,手机号和邮箱已经成为了人们日常生活中不可或缺的联系方式。作为开发人员,校验用户输入的手机号和邮箱的合法性是非常必要的。本文将介绍如何使用正则表达式校验手机号和邮箱的格式是否正确。

校验手机号

在中国,手机号的格式是11位数字,其中第一位必须是1。下面是使用正则表达式校验手机号的方法:

import re

def check_phone_number(phone_number):
    pattern = r"^1\\d{10}$"
    return bool(re.match(pattern, phone_number))

上述代码中,check_phone_number() 函数接受一个字符串类型的手机号作为参数,使用 re.match() 方法和正则表达式 pattern 进行匹配。如果匹配成功,则返回 True,否则返回 False。

上述正则表达式 pattern 是一个字符串,它的含义解释如下:

  • ^ 表示匹配字符串的开始位置
  • 1 表示第一位必须是数字 1
  • \\d{10} 表示接下来的 10 位必须是数字
  • $ 表示匹配字符串的结束位置

我们可以通过调用 check_phone_number() 函数来检验手机号的合法性:

print(check_phone_number("13812345678"))  # True
print(check_phone_number("1881234567"))   # False
print(check_phone_number("138123456789")) # False

校验邮箱

校验邮箱的格式比较复杂,但是通过正则表达式也可以很容易地实现。下面是使用正则表达式校验邮箱的方法:

import re

def check_email(email):
    pattern = r"^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$"
    return bool(re.match(pattern, email))

上述代码中,check_email() 函数接受一个字符串类型的邮箱地址作为参数,使用 re.match() 方法和正则表达式 pattern 进行匹配。如果匹配成功,则返回 True,否则返回 False。

上述正则表达式 pattern 是一个字符串,它的含义解释如下:

  • ^ 表示匹配字符串的开始位置
  • [a-zA-Z0-9_-]+ 表示匹配用户名部分,其中包含大小写字母、数字、下划线和横线
  • @ 表示匹配 @ 符号
  • [a-zA-Z0-9_-]+ 表示匹配域名部分,同样包含大小写字母、数字、下划线和横线
  • (\\.[a-zA-Z0-9_-]+)+ 表示匹配顶级域名部分,可以有多个,每个以 . 开头
  • $ 表示匹配字符串的结束位置

我们可以通过调用 check_email() 函数来检验邮箱的合法性:

print(check_email("example@example.com"))      # True
print(check_email("example@example.com.cn"))   # True
print(check_email("example_example.com"))     # False
print(check_email("example@example_com.cn"))  # False

通过使用正则表达式,我们可以轻松地校验手机号和邮箱的合法性,保证用户输入的数据格式正确,同时提高系统的安全性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/19169.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Lombok工具 : 常用注解介绍 (全)

文章目录 介绍引入Maven依赖常用的注解 NoArgsConstructor/AllArgsConstructorRequiredArgsConstructorGetter/SetterToString/EqualsAndHashCodeDataBuilderAccessors 其他注解 SneakyThrowsValueCleanupNotNullSynchronizedLog、Log4j、Slf4j、Log4j2、CommonsLog、XSlf4j等…

Type-C显示器是什么,Type-C显示器的5大优势

在显示器领域内,USB Type-C接口还处于发展阶段,目前已经在新推出的一些高端显示器和旗舰显示器中有配置。USB Type-C接口的出现,将会形成以显示器为核心的桌面解决方案,用户可以把任何笔记本、手机、平板等等的画面转移到一台大屏…

docker php安装redis扩展

有这么一个情况,我在docker中,安装了镜像,也启动了容器,容器有:nginx、mysql、redis、php 是一个基本的开发环境 容器启动成功,我们先连接一下,看看是否正常。 先保证这些都ok,我们…

数据可视化工具 - ECharts以及柱状图的编写

1 快速上手 引入echarts 插件文件到html页面中 <head><meta charset"utf-8"/><title>ECharts</title><!-- step1 引入刚刚下载的 ECharts 文件 --><script src"./echarts.js"></script> </head>准备一个…

一顿饭的事儿,搞懂了Linux5种IO模型

大家好&#xff0c;我是老三&#xff0c;人生有三大难题&#xff0c;事业、爱情&#xff0c;和 ——这顿吃什么&#xff01; 人在家中躺&#xff0c;肚子饿得响&#xff0c;又到了不得不吃的时候&#xff0c;这顿饭该怎么吃&#xff1f;吃什么呢&#xff1f; Linux里有五种I…

chatgpt搜索脚本

安装地址 https://greasyfork.org/zh-CN/scripts/459997 注意事项 &#xff01;&#xff01;注意&#xff1a;如果你在360相关浏览器上使用插件。360搜索将不会生效&#xff0c;因为已被浏览器禁用在so.com网址上使用。 &#xff01;&#xff01;尽量选择tampermonkey脚本管…

Datax的使用说明及入门操作案例演示

1.DataX DataX 是阿里云 DataWorks数据集成 的开源版本&#xff0c;在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, dat…

第四十九章 Unity UI适配器组件

首先&#xff0c;我们介绍内容大小适配器 (Content Size Fitter)组件。 我们新建一个“SampleScene6.unity”场景&#xff0c;然后添加一个Text UI元素&#xff0c;让其居中显示&#xff0c;并且尺寸设置为50*30。 由于我们设置Text的尺寸在水平方向上面太小&#xff0c;也就是…

计算机毕业论文内容参考|基于神经网络的网络安全态势感知技术研究

文章目录 导文文章重点摘要前言绪论课题背景国内外现状与趋势课题内容相关技术与方法介绍技术分析技术设计技术实现总结与展望导文 基于神经网络的网络安全态势感知技术研究 文章重点 摘要 随着互联网的快速发展,网络攻击的频率和复杂度也在逐年增加。为了更好地保护信息系统…

【Python】【进阶篇】27、Django url标签详解

目录 27、Django url标签详解1. url标签基本使用2. 给定参数的动态url 27、Django url标签详解 在 Django 的模板语言中除了我们前面章节介绍过的 if 标签和 for 标签之外&#xff0c;还有许多我们时常用到标签&#xff0c;比如 url 标签。 1. url标签基本使用 Django 的模板…

4.6k Star,SpringBoot+Vue+App+硬件实现的智能家居系统,一套带走

今天&#xff0c;推荐一个智能家居系统项目。这是我目前见过的最好的智能家居系统项目&#xff0c;功能完整&#xff0c;代码结构清晰。值得推荐。 4.6k Star&#xff0c;SpringBootVueApp硬件实现的智能家居系统&#xff0c;一套带走 简介 FastBee是一个简单易用的物联网平…

【设计模式】责任链模式的介绍及其应用

责任链的介绍 责任链模式是一种对象的行为模式。在责任链模式里&#xff0c;很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递&#xff0c;直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求&a…

谷歌浏览器 | Chrome DevTools系统学习篇-Device Mode

大家好&#xff0c;文接上回谷歌浏览器 | Chrome DevTools系统学习篇-概述。所谓“工欲善其事&#xff0c;必先利其器”&#xff0c;我们进一步来熟悉谷歌开发者工具。今天分享的是Device Mode&#xff0c;使用设备模式来估算您的页面在移动设备上的外观和性能。 设备模式是 Ch…

QT多线程基础

文章目录 前言一、多线程概念介绍二、创建一个线程三、start和terminate函数四、如何不使用terminate函数终止线程总结 前言 本篇文章来讲解一下QT中的多线程使用方法。 其实线程这个概念对于我们来说并不陌生&#xff0c;main函数在多线程中一般就被称为主线程。 在QT中&am…

如何在IVD行业运用IPD?

IVD&#xff08;体外诊断&#xff0c;In Vitro Diagnostic&#xff09;是指对人体样本&#xff08;血液、体液、组织&#xff09;进行定性或定量的检测&#xff0c;进而判断疾病或机体功能的诊断方法。IVD目前已经成为疾病预防、诊断治疗必不可少的医学手段&#xff0c;约80%左…

这才是 玩转Github 的正确姿势

这才是 玩转Github 的正确姿势 GitHub各位应该都很熟悉了&#xff0c;全球最大的开源社区&#xff0c;也是全球最大的同性交友网站~~&#xff0c;但是大部分同学使用GitHub应该就是通过别人的开源链接&#xff0c;点进去下载对应的项目&#xff0c;而真正使用Github来查找开源…

camunda的Java委托如何使用

一、camunda的Java委托有什么用途 在Camunda中&#xff0c;Java委托是一种用于在流程执行期间执行自定义逻辑的Java类。使用Java委托&#xff0c;您可以在流程执行期间通过Java代码实现各种复杂的业务逻辑。 以下是一些使用Java委托的常见用途&#xff1a; 1、计算值&#x…

有什么好用的云渲染?

在CG制作流程中&#xff0c;离线渲染一直是必要且耗时的环节。你的场景越复杂&#xff0c;渲染出现问题的可能性就越大&#xff0c;尤其是当你独自工作&#xff0c;没有人给你建议的时候&#xff0c;灯光、模型、场景任何一个环节渲染时出现问题都可能让你焦头烂额&#xff0c;…

基于Kubernetes集群构建大中型企业CICD应用平台(2)--code阶段工具gitlab安装

这里我们为gitlab服务器准备一台虚拟机&#xff1a;192.168.19.6-gitlab服务器 在code阶段&#xff0c;我们需要将不同版本的代码存储到一个仓库中&#xff0c;常见的版本控制工具就是SVN或者Git&#xff0c;这里我们采用Git作为版本控制工具&#xff0c;GitLab作为远程仓库。…

5 创建映射

5 映射 上边章节安装了ik分词器&#xff0c;如果在索引和搜索时去使用ik分词器呢&#xff1f;如何指定其它类型的field&#xff0c;比如日期类型、数 值类型等。 本章节学习各种映射类型及映射维护方法。 5.1 映射维护方法 1、查询所有索引的映射&#xff1a; GET&#xf…