知道这些正则表达式,让你的代码更简洁

2023-12-16  本文已影响0人  花生学生信

正则表达式(regular expression)是一种用来描述、匹配和操作字符串的强大工具。它由一系列字符和特殊符号组成,可以用于在文本中搜索、替换、验证和提取特定模式的字符串。
以下是一些常见的正则表达式元字符和符号:

例如,正则表达式 abc 可以匹配字符串中的 abca.c 可以匹配 abcadcaec 等。

校验中文:
^[\u4e00-\u9fa5]+$
#这个正则表达式可以用于判断一个字符串是否完全由中文字符组成。
import re
text = '你好,世界!'
pattern = r'^[\u4e00-\u9fa5]+$'
if re.match(pattern, text):
    print('字符串只包含中文字符')
else:
    print('字符串中包含非中文字符')

该示例会输出 字符串只包含中文字符,因为文本中只包含中文字符。

校验手机号:
^1[3-9]\d{9}$
#这个正则表达式可以匹配以1开头的11位数字,其中第二位数字为3-9之间的任意数字。

这个正则表达式可以用于验证一个字符串是否为有效的中国大陆手机号码。

以下是一个示例代码:

import re

phone_number = '13912345678'
pattern = r'^1[3-9]\d{9}$'
if re.match(pattern, phone_number):
    print('手机号码格式正确')
else:
    print('手机号码格式错误')

该示例会输出 手机号码格式正确,因为 13912345678 符合中国大陆手机号码的格式要求。

校验金额
^\d{1,3}(,\d{3})*(\.\d{2})?$
#可以用来匹配一个字符串是否符合金额的格式,允许包含逗号分隔的千位符和小数点后两位
import re

amount = '1,234,567.89'
pattern = r'^\d{1,3}(,\d{3})*(\.\d{2})?$'
if re.match(pattern, amount):
    print('金额格式正确')
else:
    print('金额格式错误')

该示例会输出 金额格式正确,因为 1,234,567.89 符合金额的格式要求。

校验日期
^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2))(?:(?:1[6-9]|[2-9]\d)?\d{2})$|^(?:29(\/|-|\.)(?:0?2)\3(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$|^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4(?:(?:1[6-9]|[2-9]\d)?\d{2})$
#这个正则表达式可以匹配格式为"dd/mm/yyyy"、"dd-mm-yyyy"或"dd.mm.yyyy"的日期,其中年份为1600年至9999年之间的日期。
^\d{4}-\d{2}-\d{2}$
#这个正则表达式可以使用以下正则表达式来校验yyyy-mm-dd格式的日期,以4位数字开头,然后是一个连字符,然后是2位数字,再然后是一个连字符,最后是2位数字。

由于该正则表达式较长且复杂,以下是对其不同部分的解释:

  1. ^(?:(?:31(\/|-|\.)(?:0?[13578]|1[02]))\1|(?:(?:29|30)(\/|-|\.)(?:0?[13-9]|1[0-2])\2)):匹配月份为 1、3、5、7、8、10 或 12 时,日期可以为 01 到 31。
  2. (?:(?:1[6-9]|[2-9]\d)?\d{2})$:匹配年份为 1600 到 9999 年。
  3. ^(?:29(\/|-|\.)(?:0?2)\3:匹配二月份的情况。
  4. (?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00))))$:匹配闰年的情况,例如 2000 年。
  5. ^(?:0?[1-9]|1\d|2[0-8])(\/|-|\.)(?:(?:0?[1-9])|(?:1[0-2]))\4:匹配日期为 1 到 28 的情况。
  6. (?:(?:1[6-9]|[2-9]\d)?\d{2})$:匹配年份为 1600 到 9999 年。

可以简单的表述如下:
^\d{4}-\d{2}-\d{2}$
解析该正则表达式的含义如下:

这个正则表达式可以用于验证简单的 YYYY-MM-DD 格式的日期。

校验身份证号
/^(\d{6})(19|20)?(\d{2})(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])(\d{3})(\d|X)?$/
#这个正则表达式可以匹配18位和15位身份证号,其中18位身份证号的前17位为数字,最后一位可以是数字或者X,15位身份证号的前15位为数字。

这个正则表达式可以用于验证中国身份证号码的格式。

校验文件路径及扩展名
文件路径的正则表达式:
^(\/[^\/\0]+)+$

这个正则表达式可以用于验证路径字符串是否符合以斜杠开头,并且没有包含斜杠以外的非法字符,例如 /path/to/something 是匹配的,而 path/to/something/path/to/something/ 不匹配。

扩展名的正则表达式:
\.[a-zA-Z0-9]+$

这个正则表达式可以用于提取文件名中的扩展名部分,例如 .txt.jpg.pdf 等。

由数字、英文字母、下划线组成的字符串
^\w+$

因此,这个正则表达式可以用于验证一个字符串是否只包含字母、数字和下划线,并且没有其他特殊字符。

例如,hello123username_1password123 都符合该正则表达式,而 hello#worlduser-name@password 不符合该正则表达式。

上一篇 下一篇

猜你喜欢

热点阅读