关于邮箱和密码的常用正则表达式的总结

本文深入探讨了正则表达式在电子邮件地址和密码验证中的应用,提供了实用的代码示例,并详细解释了零宽断言的概念及用法,帮助读者掌握正则表达式的高级技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、关于邮箱的常用正则表达式:

一个匹配所有邮箱格式的代码:

#-*- coding:utf-8 -*-
__author__ = 'zyx'

import re

text = input("Please input your Email address:\n")
if re.match(r'^[0-9a-zA-Z_]{0,19}@[0-9a-zA-Z]{1,13}\.[com,cn,net]{1,3}$',text):
#if re.match(r'[0-9a-zA-Z_]{0,19}@163.com',text):
    print('Email address is Right!')
else:
    print('Please reset your right Email address!')

在这里插入图片描述

参考:

  1. Python正则表达式验证邮箱
  2. 正则表达式-邮箱有效性验证
  3. 通用邮箱正则表达式
  4. 常用正则表达式—邮箱(Email)
  5. 匹配Email地址的正则表达式
  6. Python实现正则表达式匹配任意的邮箱
  7. 正则表达式-廖雪峰

二、关于密码的常用正则表达式:

import re
import abort

password = input("Please input your password:\n")
if re.search("^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$", password):
	pass
else:
	abort(400)

解释:

一般密码要求必须包含数字、字母,6-10位,校验的正则表达式如下

^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{6,10}$
 
  • 1

分开来注释一下:
^ 匹配一行的开头位置
(?![0-9]+$) 预测该位置后面不全是数字
(?![a-zA-Z]+$)预测该位置后面不全是字母
[0-9A-Za-z] {6,10} 由6-10位数字或这字母组成
$匹配行结尾位置

注:(?!xxxx) 是正则表达式的负向零宽断言一种形式,标识预该位置后不是xxxx字符。

参考:

  1. [正则表达式(一)] 必须包含数字、字母的校验
  2. 密码是6-16位字母加数字的正则表达式和验证手机号码的正则表达式
  3. 必须有数字和字母组合的密码正则表达式
  4. 知道这20个正则表达式,能让你少写1,000行代码
  5. [python] 判断密码强度
  6. 正则表达式简明参考
  7. 密码强度正则表达式 – 必须包含大写字母,小写字母和数字,至少8个字符等

三、【正则表达式系列】零宽断言

在这里插入图片描述

零宽断言表示匹配字符的时候再添加一些定位条件,使匹配更精准。

  • \w+(?=ing) 匹配以ing结尾的多个字符(不包括ing)
  • \w+(?!ing) 匹配不是ing结尾的多个字符

  • (?<=re)\w+ 匹配以re开头的多个字符(不包括re)
  • (?<!re)\w+ 匹配不是re开头的多个字符

  • (?<=\s)\d+(?=\s) 匹配两边是空白符的数字,不包括空白符



在这里插入图片描述

参考:

  1. 【正则表达式系列】零宽断言
  2. 正则表达式–零宽断言详解
  3. 正则:零宽断言和负向零宽断言
  4. 正则表达式的先行断言(lookahead)和后行断言(lookbehind)
  5. 负向零宽断言
  6. 正则表达式 零宽断言(正向和负向)
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dev_zyx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值