python中校验手机号、邮箱、密码的正则表达式

时间:2025-03-09 09:32:52

0. element-ui中的邮箱正则

/[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/

1. 校验邮箱 

# 方法一:
email_pattern = r"^[a-z0-9][\w.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$"
ret = (email_pattern, "1341935533@")
if ret:
    print(())


方法二:
email_pattern = r"^[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){0,4}$"
ret = (email_pattern, "mayanan_net@")
if ret:
    print(())

方法三:
import re

def checkEmail(email):

    regex_1 = '^(\w+)@$'
    regex_2 = '^(\w+)@$'
    regex_3 = '^(\w+)@$'
    regex_4 = '^(\w+)@$'
    regex_5 = '^[1-9][0,9]{4,}+@$'
    regex = [regex_1 ,regex_2 ,regex_3, regex_4, regex_5]
    for i in  regex:
        result = (i,email)
        if result:
            print("匹配成功")
            return True
        else:
            print("匹配失败")
            return False
email = 'sdjflsdjkl@'
checkEmail(email)

2. 校验手机号 

首先,我们要知道我们的手机号码是什么开头的?

移动手机号码开头有16个号段:134、135、136、137、138、139、147、150、151、152、157、158、159、182、187、188。

联通手机号码开头有7种号段:130、131、132、155、156、185、186。

电信手机号码开头有4个号段:133、153、180、189。

import re
from typing import Union

PHONE_PATTERN = ("^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$")


def is_phone_number(phone: Union[str, int]) -> bool:
    phone = str(phone)
    if not ():
        return False
    return bool(PHONE_PATTERN.match(phone))


ret = is_phone_number("15313067272")
print(ret)

3. 校验密码:必须以字母或下划线开头,最小长度6位

PASSWORD_PATTERN = (r"^[a-zA-Z_]\w{5,}$")

4. 弱密码校验

pwd = (r"^(?![0-9]+$)[0-9a-zA-Z\\\,\`\!\@\#\$\%\^\&\*\[\]\{\}\?\<\>\.\/\-\+\=\_]{8,20}$")

5. 必须包含至少一个字母、一个数字和一个特殊字符,并且长度为6到20个字符

PASSWORD_REX = r"^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*?&\.~\\#\^\(\)\-\_/]).{6,20}$"