常用的正则表达式

14 篇文章 0 订阅
5 篇文章 0 订阅

正则表达式是一种强大的文本处理工具,它能够帮助我们匹配、查找、替换复杂文本模式。正则表达式的设计灵感来源于自动机理论和形式语言理论。它通常用于文本搜索、文本编辑以及字符串处理的程序中。

常用的正则表达式符号:

  • ^:匹配输入字符串的开始位置。

  • $:匹配输入字符串的结束位置。

  • .:匹配除换行符之外的任意单个字符。

  • *:匹配前面的子表达式零次或多次。

  • +:匹配前面的子表达式一次或多次。

  • ?:匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。

  • {n}:n 是一个非负整数,匹配确定的 n 次。

  • {n,}:至少匹配 n 次。

  • {n,m}:至少匹配 n 次且不超过 m 次。

  • [xyz]:字符集合,匹配所包含的任意一个字符。

  • [^xyz]:负值字符集合,匹配未包含的任意字符。

  • (a|b):匹配 a 或 b。

  • \d:匹配一个数字字符。等价于 [0-9]

  • \w:匹配包括下划线的任何单词字符。等价于 [A-Za-z0-9_]

常见的正则表达式:

校验数字的表达式

  1. 整数: ^-?\d+$

    • ^:匹配输入字符串的开始位置。

    • -?:可选的负号,表示可能有或没有负号。

    • \d+:匹配一个或多个数字。

    • $:匹配输入字符串的结束位置。

    这个表达式会匹配任意正整数或负整数,不包括小数。

  2. 非负整数(包括零): ^\d+$

    • ^:匹配输入字符串的开始位置。

    • \d+:匹配一个或多个数字。

    • $:匹配输入字符串的结束位置。

    这个表达式匹配任意非负整数,不包括小数。

  3. 正整数: ^[1-9]\d*$

    • ^:匹配输入字符串的开始位置。

    • [1-9]:匹配 1 到 9 的任意数字,排除了零。

    • \d*:匹配零个或多个数字。

    • $:匹配输入字符串的结束位置。

    这个表达式将匹配任意正整数,不包括零。

  4. 非正整数(包括零): ^-[1-9]\d*|0$

    • ^:匹配输入字符串的开始位置。

    • -:负号,表示负数。

    • [1-9]:匹配 1 到 9 的任意数字。

    • \d*:匹配零个或多个数字。

    • |:逻辑或运算符,表示满足左侧或右侧表达式即可。

    • 0$:匹配数字0。

    这个表达式将匹配所有负整数以及零。

  5. 浮点数: ^-?\d+(\.\d+)?$

    • ^:匹配输入字符串的开始位置。

    • -?:可选的负号,表示可能有或没有负号。

    • \d+:匹配一个或多个数字,代表整数部分。

    • (\.\d+)?:可选的小数部分,如果有小数的话必须以小数点开始,后面跟着一个或多个数字。

    • $:匹配输入字符串的结束位置。

    这个表达式会匹配任意正浮点数或负浮点数,也包括整数。

数字:^[0-9]*$
​
n位的数字:^\d{n}$
​
至少n位的数字:^\d{n,}$
​
m-n位的数字:^\d{m,n}$
​
零和非零开头的数字:^(0|[1-9][0-9]*)$
​
非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
​
带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$
​
正数、负数、和小数:^(-|+)?\d+(.\d+)?$
​
有两位小数的正实数:^[0-9]+(.[0-9]{2})?$
​
有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$
​
非零的正整数:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^+?[1-9][0-9]*$
​
非零的负整数:^-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
​
非负整数:^\d+$ 或 ^[1-9]\d*|0$
​
非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
​
非负浮点数:^\d+(.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
​
非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
​
正浮点数:^[1-9]\d*.\d*|0.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
​
负浮点数:^-([1-9]\d*.\d*|0.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
​
浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

校验字符的表达式

  1. 字母(不区分大小写): ^[A-Za-z]+$

    • ^:定位在字符串开始的位置。

    • [A-Za-z]:匹配任意大小写字母。

    • +:前面的模式出现一次或多次。

    • $:定位在字符串结束的位置。

    这个表达式校验字符串是否只包含字母。

  2. 小写字母: ^[a-z]+$

    • ^:定位在字符串开始的位置。

    • [a-z]:匹配任意小写字母。

    • +:前面的模式出现一次或多次。

    • $:定位在字符串结束的位置。

    仅校验字符串中是否只包含小写字母。

  3. 大写字母: ^[A-Z]+$

    • ^:定位在字符串开始的位置。

    • [A-Z]:匹配任意大写字母。

    • +:前面的模式出现一次或多次。

    • $:定位在字符串结束的位置。

    仅校验字符串中是否只包含大写字母。

  4. 字母和数字组合: ^[A-Za-z0-9]+$

    • ^:定位在字符串开始的位置。

    • [A-Za-z0-9]:匹配任意大小写字母或数字。

    • +:前面的模式出现一次或多次。

    • $:定位在字符串结束的位置。

    校验字符串是否只含有字母和数字。

  5. 中文字符: ^[\u4e00-\u9fa5]+$

    • ^:定位在字符串开始的位置。

    • [\u4e00-\u9fa5]:Unicode码范围,匹配任意中文字符。

    • +:前面的模式出现一次或多次。

    • $:定位在字符串结束的位置。

    专门用于校验字符串是否只包含中文字符。

  6. 特定字符集合: ^[abc]+$

    • ^:定位在字符串开始的位置。

    • [abc]:匹配'a'、'b'或'c'。

    • +:前面的模式出现一次或多次。

    • $:定位在字符串结束的位置。

    校验字符串是否只由 'a'、'b'、'c' 组成。

汉字:^[\u4e00-\u9fa5]{0,}$
​
英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
​
长度为3-20的所有字符:^.{3,20}$
​
由26个英文字母组成的字符串:^[A-Za-z]+$
​
由26个大写英文字母组成的字符串:^[A-Z]+$
​
由26个小写英文字母组成的字符串:^[a-z]+$
​
由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$
​
由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
​
中文、英文、数字包括下划线:^[\u4E00-\u9FA5A-Za-z0-9_]+$
​
中文、英文、数字但不包括下划线等符号:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
​
可以输入含有^%&',;=?$\"等字符:[^%&',;=?$\x22]+ 12 禁止输入含有~的字符:[^~\x22]+

特殊需求表达式

  1. 校验邮箱地址: ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$

    • 利用+确保前面的字符(字母、数字、点、百分号、加号、减号)出现一次或多次。

    • @符号为邮箱地址特有。

    • 点之后是域名,可以包含字母、数字和减号。

    • 域名后面的点和两到四个字母代表顶级域名。

  2. 校验IPv4地址: ^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$

    • 每个括号内的模式校验0到255的数字,考虑到了特殊情况,例如数字前面可能有一个或两个前导0。

    • \.是用于分隔IP地址中各个数字的点(需要转义)。

    • {3}确保这样的模式重复三次,后面跟着一个相同的数字模式。

  3. 校验日期(YYYY-MM-DD格式): ^(19|20)\d\d[-](0[1-9]|1[012])[-](0[1-9]|[12][0-9]|3[01])$

    • 开头两位是19或20,后面是两位任意数字,代表年份。

    • 随后是一个短横线,然后是01至12范围的月份。

    • 最后是日期部分,可以是01到31。

  4. 校验特定长度和字符的字符串(例如:8位的字母和数字): ^[a-zA-Z0-9]{8}$

    • 只允许字母和数字的组合。

    • {8}确保字符串长度为8。

Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
​
域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
​
InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
​
手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
​
电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
​
国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
​
身份证号(15位、18位数字):^\d{15}|\d{18}$
​
短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
​
帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
​
密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]\w{5,17}$
​
强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
​
日期格式:^\d{4}-\d{1,2}-\d{1,2}
​
一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
​
一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
​
xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
​
空白行的正则表达式:\n\s*\r (可以用来删除空白行)
​
腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
​
中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值