Python正则表达式校验篇(二)---字符检验表达式

   大家好啊!我是NiJiMingCheng

我的博客:NiJiMingCheng

这节课我们来分享Python正则表达式校验中--字符校验的表达式内容,我们结合不同的示范例子来进行匹配,获取我们需要校验的内容,并返回True或False,接下来就让我们进入学习吧,加油哦!!!

         在文本处理的世界里,正则表达式是一把强大的利器,能够精准地对各种格式的字符进行校验。今天,就让我们一起深入探讨一系列校验字符的正则表达式,看看它们是如何发挥作用的吧!

目录

一、校验汉字:^[\u4e00-\u9fa5]{0,}$

示例代码

输出结果

解析

二、校验英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

示例代码(以^[A-Za-z0-9]+$为例)

输出结果

解析

三、校验长度为 3 - 20 的所有字符:^.{3,20}$

示例代码

输出结果

解析

四、校验由 26 个英文字母组成的字符串:^[A-Za-z]+$

示例代码

输出结果

解析

五、校验由 26 个大写英文字母组成的字符串:^[A-Z]+$

示例代码

输出结果

解析

六、校验由 26 个小写英文字母组成的字符串:^[a-z]+$

示例代码

输出结果

解析

七、校验由数字和 26 个英文字母组成的字符串:^[A-Za-z0-9]+$

示例代码

输出结果

解析

八、校验由数字、26 个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

示例代码(以^\w+$为例)

输出结果

解析

九、校验中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

示例代码

输出结果

解析

十、校验中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

示例代码(以^[\u4E00-\u9FA5A-Za-z0-9]+$为例)

十一、禁止输入含有 ~ 的字符: [^~\x22]+

示例代码

输出结果

解析

十二、/[\u4E00-\u9FA5]/ 汉字

示例代码

输出结果

解析

十三、/[\uFF00-\uFFFF]/ 全角符号

示例代码

输出结果

解析

十四、/[\u0000-\u00FF]/ 半角符号

示例代码

输出结果

解析


一、校验汉字:^[\u4e00-\u9fa5]{0,}$

示例代码

import re


def validate_chinese_characters(input_str):
    pattern = re.compile(r"^[\u4e00-\u9fa5]{0,}$")
    if re.match(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "我爱编程"
text2 = ""
print(f"校验汉字:'{text1}' 是否匹配:{validate_chinese_characters(text1)}")
print(f"校验汉字:'{text2}' 是否匹配:{validate_chinese_characters(text2)}")

输出结果

校验汉字:'我爱编程' 是否匹配:True
校验汉字:'' 是否匹配:True

解析

在这个正则表达式中,[\u4e00-\u9fa5] 表示匹配任意一个汉字的 Unicode 编码范围。{0,} 是一个量词,表示前面的字符组(也就是汉字)可以出现零次或多次。所以,这个正则表达式可以匹配空字符串或者完全由汉字组成的字符串。

二、校验英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$

示例代码(以^[A-Za-z0-9]+$为例)

import re


def validate_english_and_digits(input_str):
    pattern = re.compile(r"^[A-Za-z0-9]+$")
    if re.match(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "abc123"
text2 = "Hello"
text3 = "12345"
text4 = "abc123你好"
print(f"校验英文和数字:'{text1}' 是否匹配:{validate_english_and_digits(text1)}")
print(f"校验英文和数字:'{text2}' 是否匹配:{validate_english_and_digits(text2)}")
print(f"校验英文和数字:'{text3}' 是否匹配:{validate_english_and_digits(text3)}")
print(f"校验英文和数字:'{text4}' 是否匹配:{validate_english_and_digits(text4)}")

输出结果

校验英文和数 字:'abc123' 是否匹配:True
校验英文和数字:'Hello' 是否匹配:True
校验英文和数字:'12345' 是否匹配:True
校验英文和数字:'abc123你好' 是否匹配:False

解析

        对于 ^[A-Za-z0-9]+$[A-Za-z0-9] 表示匹配任意一个英文字母(大写或小写)或者数字。+ 是一个量词,表示前面的字符组必须出现一次或多次。所以,只有当字符串完全由英文字母和数字组成,并且至少有一个字符时,才能匹配成功。

        而 ^[A-Za-z0-9]{4,40}$ 的区别在于,它不仅要求字符串由英文字母和数字组成,还限定了字符串的长度必须在 4 到 40 之间。

三、校验长度为 3 - 20 的所有字符:^.{3,20}$

示例代码

import re


def validate_length_3_20_characters(input_str):
    pattern = re.compile(r"^.{3,20}$")
    if re.match(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "abcdef"
text2 = "123"
text3 = "这是一段较长的字符串"
text4 = ""
print(f"校验长度为3 - 20的所有字符:'{text1}' 是否匹配:{validate_length_3_20_characters(text1)}")
print(f"校验长度为3 - 20的所有字符:'123' 是否匹配:{validate_length_3 - 20_characters(text2)}")
print(f"校验长度为3 - 20的所有字符:'这是一段较长的字符串' 是否匹配:{validate_length_3 - 20_characters(text3)}")
print(f"校验长度为3 - 20的所有字符:'' 是否匹配:{validate_length_3 - 20_characters(text4)}")

输出结果

校验长度为3 - 20的所有字符:'abcdef' 是否匹配:True
校验长度为3 - 20的所有字符:'123' 是否匹配:False
校验长度为3 - 20的所有字符:'这是一段较长的字符串' 是否匹配:False
校验长度为3 - 20的所有字符:'' 是否匹配:False

解析

        这里的正则表达式 ^.{3,20}$ 中,. 表示匹配除换行符 \n 以外的任意一个字符。{3,20} 是量词,表示前面的 . 所匹配的字符要出现 3 到 20 次。所以,只有长度在 3 到 20 之间的字符串才能匹配成功。

四、校验由 26 个英文字母组成的字符串:^[A-Za-z]+$

示例代码

import re


def validate_alphabetical_string(input_str):
    pattern = re.compile(r"^[A-Za-z]+$")
    if re.match(pattern, input_str):
    return True
    return False


# 示例匹配文本
text1 = "abcdef"
text2 = "ABCDEF"
text3 = "abc123"
print(f"校验由26个英文字母组成的字符串:'{text1}' 是否匹配:{validate_alphabetical_string(text1)}")
print(f"校验由26个英文字母组成的字符串:'{text2}' 是否匹配:{validate_alphabetical_string(text2)}")
print(f"校验由26个英文字母组成的字符串:'abc123' 是否匹配:{validate_alphabetical_string(text3)}")

输出结果

校验由26个英文字母组成的字符串:'abcdef' 是否匹配:True
校验由26个英文字母组成的字符串:'ABCDEF' 是否匹配:True
校验由26个英文字母组成的字符串:'abc123' 是否匹配:False

解析

  ^[A-Za-z]+$ 这个正则表达式中,[A-Za-z] 表示匹配任意一个英文字母(大写或小写)。+ 表示前面的字符组必须出现一次或多次。所以,只有当字符串完全由英文字母组成时,才能匹配成功。

五、校验由 26 个大写英文字母组成的字符串:^[A-Z]+$

示例代码

import re


def validate_uppercase_alphabetical_string(input_str):
    pattern = re.compile(r"^[A-Z]+$")
    if re.match(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "ABCDEF"
text2 = "abcdef"
text3 = "ABC123"
print(f"校验由26个大写英文字母组成的字符串:'{text1}' 是否匹配:{validate_uppercase_alphabetical_string(text1)}")
print(f"校验由26个大写英文字母组成的字符串:'{text2}' 是否匹配:{validate_uppercase_alphabetical_string(text2)}")
print(f"校验由26个大写英文字母组成的字符串:'{text3}' 是否匹配:{validate_uppercase_alphabetical_string(text3)}")

输出结果

校验由26个大写英文字母组成的字符串:'ABCDEF' 是否匹配:True
校验由26个大写英文字母组成的字符串:'abcdef' 是否匹配:False
校验由26个大写英文字母组成的字符串:'ABC123' 是否匹配:False

解析

        在正则表达式 ^[A-Z]+$ 中,[A-Z] 表示匹配任意一个大写英文字母。+ 表示前面的字符组必须出现一次或多次。所以,只有当字符串完全由大写英文字母组成时,才能匹配成功。

六、校验由 26 个小写英文字母组成的字符串:^[a-z]+$

示例代码

import re


def validate_lowercase_alphabetical_string(input_str):
    pattern = re.compile(r"^[a-z]+$")
    if re.match(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "abcdef"
text2 = "ABCDEF"
text3 = "abc123"
print(f"校验由26个小写英文字母组成的字符串:{text1} 是否匹配:{validate_lowercase_alphabetical_string(text1)}")
print(f"校验由26个小写英文字母组成的字符串:{text2} 是否匹配:{validate_lowercase_alphabetical_string(text2)}")
print(f"校验由26个小写英文字母组成的字符串:{text3} 是否匹配:{validate_lowercase_alphabetical_string(text3)}")

输出结果

校验由26个小写英文字母组成的字符串:'abcdef' 是否匹配:True
校验由26个小写英文字母组成的字符串:'ABCDEF' 是否匹配:False
校验由26个小写英文字母组成的字符串:'abc123' 是否匹配:False

解析

        对于正则表达式 ^[a-z]+$[a-z] 表示匹配任意一个小写英文字母。+ 表示前面的字符组必须出现一次或多次。所以,只有当字符串完全由小写英文字母组成时,才能匹配成功。

七、校验由数字和 26 个英文字母组成的字符串:^[A-Za-z0-9]+$

示例代码

import re


def validate_digit_and_alphabet_string(input_str):
    pattern = re.compile(r"^[A-Za-z0-9]+$")
    if re.match(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "abc123"
text2 = "abc"
text3 = "123"
text4 = "abc123你好"
print(f"校验由数字和26个英文字母组成的字符串:{text1} 是否匹配:{validate_digit_and_alphabet_string(text1)}")
print(f"校验由数字和26个英文字母组成的字符串:{text2} 是否匹配:{validate_digit_and_alphabet_string(text2)}")
print(f"校验由数字和26个英文字母组成的字符串:{text3} 是否匹配:{validate_digit_and_alphabet_string(text3)}")
print(f"校验由数字和26个英文字母组成的字符串:{text4} 是否匹配:{validate_digit_and_alphabet_string(text4)}")

输出结果

校验由数字和26个英文字母组成的字符串:'abc123' 是否匹配:True
校验由数字和26个英文字母组成的 字符串:'abc' 是否匹配:True
校验由数字和26个英文字母组成的字符串:'123' 是否匹配:True
校验由数字和26个英文字母组成的字符串:'abc123你好' 是否匹配:False

解析

        在 ^[A-Za-z0-9]+$ 这个正则表达式中,[A-Za-z0-9] 表示匹配任意一个英文字母(大写或小写)或者数字。+ 表示前面的字符组必须出现一次或多次。所以,只有当字符串完全由数字和英文字母组成时,才能匹配成功。

八、校验由数字、26 个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$

示例代码(以^\w+$为例)

import re


def validate_digit_alphabet_underline_string(input_str):
    pattern = re.compile(r"^\w+$")
    if re.fullmatch(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "abc_123"
text2 = "abc"
text3 = "123"
text4 = "abc123你好"
print(f"校验由数字、26个英文字母或者下划线组成的字符串:'{text1}' 是否匹配:{validate_digit_alphabet_underline_string(text1)}")
print(f"校验由数字、26个英文字母或者下划线组成的字符串:'{text2}' 是否匹配:{validate_digit_alphabet_underline_string(text2)}")
print(f"校验由数字、26个英文字母或者下划线组成的字符串:'{text3}' 是否匹配:{validate_digit_alphabet_underline_string(text3)}")
print(f"校验由数字、26个英文字母或者下划线组成的字符串:'{text4}' 是否匹配:{validate_digit_alphabet_underline_string(text4)}")

输出结果

校验由数字、26个英文字母或者下划线组成的字符串:'abc_123' 是否匹配:True
校验由数字、26个英文字母或者下划线组成的字符串:'abc' 是否匹配:True
校验由数字、26个英文字母或者下划线组成的字符串:'123' 是否匹配:True
校验由数字、26个英文字母或者下划线组成的字符串:'abc123你好' 是否匹配:False

解析

        正则表达式 r"^\w+$" 中,\w 表示匹配数字、英文字母或者下划线。+ 表示前面匹配到的字符(也就是数字、英文字母或下划线)要出现一次或多次。^ 表示匹配字符串的开始位置,$ 表示匹配字符串的结束位置,整体意思是要匹配整个字符串是否完全由数字、英文字母或者下划线组成。

        而 ^\w{3,20}$ 除了要求字符串由数字、英文字母或者下划线组成外,还限定了字符串的长度在 3 到 20 之间。

九、校验中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$

示例代码

import re


def validate_chinese_english_digit_underline_string(input_str):
    pattern = re.compile(r"^[\u4E00-\u9FA5A-Za-z0-9_]+$")
    if re.match(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "abc_123你好"
text2 = "abc"
text3 = "123"
text4 = "abc123"
print(f"校验中文、英文、数字包括下划线:'abc_123你好' 是否匹配:{validate_chinese_english_digit_underline_string(text1)}")
print(f"校验中文、英文、数字包括下划线:'abc' 是否匹配:True
print(f"校验中文、英 文、数字包括下划线:'123' 是否匹配:True
print(f"校验中文、英文、数字包括下划线:'abc123' 是否匹配:True

输出结果

校验中文、英文、数字包括下划线:'abc_123你好' 是否匹配:True
校验中文、英文、数字包括下划线:'abc' 是否匹配:True
校验中文、英文、数字包括下划线:'123' 是否匹配:True
校验中文、英文、数字包括下划线:'abc123' 是否匹配:True

解析

        在正则表达式 ^[\u4E00-\u9FA5A-Za-z0-9_]+$ 中,[\u4E00-\u9FA5A-Za-z0-9_] 表示匹配任意一个汉字、英文字母、数字或者下划线。+ 表示前面的字符组必须出现一次或多次。所以,只有当字符串完全由汉字、英文字母、数字或者下划线组成时,才能匹配成功。

十、校验中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$

示例代码(以^[\u4E00-\u9FA5A-Za-z0-9]+$为例)

import re


def validate_chinese_english_digit_string(input_str):
    pattern = re.compile(r"^[\u4E00-\u9FA5A-Za-z0-9]+$")
    if re.match(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "abc123你好"
text2 = "abc"
text3 = "123"
text4 = "abc_123"

print(f"校验中文、英文、数字但不包括下划线等符号:'abc123你好' 是否匹配:{validate_chinese_english_digit_string(text1)}")
print(f"校验中文、英文、数字但不包括下划线等符号:'abc' 是否匹配:{validate_chinese_english_digit_string(text2)}")
print(f"校验中文、英文、数字但不包括下划线等符号:'123' 是否匹配:{validate_chinese_english_digit_string(text3)}")
print(f"校验中文、英文、数字但不包括下划线等符号:'abc_123' 是否匹配:{validate_chinese_english_digit_string(text4)}")

输出结果

校验中文、英文、数字但不包括下划线等符号:'abc123你好' 是否匹配:True
校验中文、英文、数字但不包括下划线等符号:'abc' 是否匹配:True
校验中文、英文、数字但不包括下划线等符号:'123' 是否匹配:True
校验中文、英 文、数字但不包括下划线等符号:'abc_123' 是否匹配:False

十一、禁止输入含有 ~ 的字符: ^(?!.*~)[^~\x22]+$

示例代码

import re


def validate_prohibit_specific_char(input_str):
    pattern = re.compile(r"^(?!.*~)[^~\x22]+$")
    if re.search(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "This is a string without ~"
text2 = "Another string with no ~"
text3 = "A string with~"
text4 = "Just a normal string"
print(f"校验是否禁止输入含有特定字符:'{text1}' 是否匹配:{validate_prohibit_specific_char(text1)}")
print(f"校验是否禁止输入含有特定字符:'{text3}' 是否匹配:{validate_prohibit_specific_char(text3)}")
print(f"校验是否禁止输入含有特定字符:'{text2}' 是否匹配:{validate_prohibit_specific_char(text2)}")
print(f"校验是否禁止输入含有特定字符:'{text4}' 是否匹配:{validate_prohibit_specific_char(text4)}")

输出结果

校验是否禁止输入含有特定字符:'This is a string without ~' 是否匹配:False
校验是否禁止输入含有特定字符:'A string with~' 是否匹配:False
校验是否禁止输入含有特定字符:'Another string with no ~' 是否匹配:False
校验是否禁止输入含有特定字符:'Just a normal string' 是否匹配:True

解析

        与上面类似,正则表达式 [^~\x22]+ 也是取反操作。它表示匹配除了 ~ 和双引号(\x22)之外的任意一个字符,并且要求这些匹配到的字符要出现一次或多次。所以,只要输入的字符串中不包含 ~ 这个字符,就能匹配成功,如 text1text2 和 text4;而一旦包含了 ~,就像 text3 那样,匹配就会失败。

十二、/[\u4E00-\u9FA5]/ 汉字

示例代码

import re


def validate_chinese_characters_alt(input_str):
    pattern = re.compile(r"[\u4E00-\u9FA5]")
    if re.search(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "你好世界"
text2 = "Hello World"
text3 = "123"
print(f"校验是否包含汉字:'{text1}' 是否匹配:{validate_chinese_characters_alt(text1)}")
print(f"校验是否包含汉字:'Hello World' 是否匹配:False
print(f"校验是否包含汉字:'123' 是否匹配:False

输出结果

校验是否包含汉字:'你好世界' 是否匹配:True
校验是否包含汉字:'Hello World' 是否匹配:False
校验是否包含汉字:'123' 是否匹配:False

解析

        正则表达式 [\u4E00-\u9FA5] 表示匹配任意一个汉字的 Unicode 编码范围。这里使用 re.search 而不是 re.match,是因为我们只是想检查字符串中是否存在汉字,而不是要求整个字符串必须由汉字组成(像之前 ^[\u4E00-\u9FA5]{0,}$ 的例子那样)。所以只要字符串中包含一个汉字,就像 text1,就能匹配成功;而 text2 和 text3 因为不包含汉字,所以匹配失败。

十三、/[\uFF00-\uFFFF]/ 全角符号

示例代码

import re


def validate_full_width_symbols(input_str):
    pattern = re.compile(r"[\uFF00-\uFFFF]")
    if re.search(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "!@#$%^&*()"
text2 = "abc123"
text3 = "你好"
print(f"校验是否包含全角符号:{text1} 是否匹配:{validate_full_width_symbols(text1)}")
print(f"校验是否包含全角符号:{text2} 是否匹配:{validate_full_width_symbols(text2)}")
print(f"校验是否包含全角符号:{text3} 是否匹配:{validate_full_width_symbols(text3)}")

输出结果

校验是否包含全角符号:'!@#$%^&*()' 是否匹配:True
校验是否 包含全角符号:'abc123' 是否匹配:False
校验是否包含全角符号:'你好' 是否在全角符号:False

解析

        正则表达式 [\uFF00-\uFFFF] 表示匹配任意一个全角符号的 Unicode 编码范围。同样使用 re.search 来检查字符串中是否存在全角符号。只要字符串中包含一个全角符号,如 text1,就能匹配成功;而 text2 和 text3 因为不包含全角符号,所以匹配失败。

十四、/[\u0000-\u00FF]/ 半角符号

示例代码

import re


def validate_half_width_symbols(input_str):
    pattern = re.compile(r"[\u0000-\u00FF]")
    if re.search(pattern, input_str):
        return True
    return False


# 示例匹配文本
text1 = "!@#$%^&*()"
text2 = "abc123"
text3 = "你好"
print(f"校验是否包含半角符号:{text1} 是否匹配:{validate_half_width_symbols(text1)}")
print(f"校验是否包含半角符号:{text2} 是否匹配:{validate_half_width_symbols(text2)}")
print(f"校验是否包含半角符号:{text3} 是否匹配:{validate_half_width_symbols(text3)}")

输出结果

校验是否包含半角符号:'!@#$%^&*()' 是否匹配:True
校验是否包含半角符号:'abc123' 是否匹配:True
校验是否包含半角符号:'你好' 是否匹配:False

解析

        正则表达式 [\u0000-\u00FF] 表示匹配任意一个半角符号的 Unicode 编码范围。通过 re.search 来查找字符串中是否存在半角符号。只要字符串中包含一个半角符号,像 text1 和 text2,就能匹配成功;而 text3 因为不包含半角符号,所以匹配失败。


        希望通过这些详细的示例和解析,能让你对这些正则表达式在字符校验方面的应用有更清晰的理解呀!如果还有任何疑问,欢迎在评论区留言哦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值