JAVA学习 PyCharm 主从复制 哨兵模式 计算机网络 swift xamarin serialization colors variant datagrid Skeljs vue绑定class 后台管理页面模板 传智播客python web前端开发实战项目 进销存源码 css获取最后一个元素 rxjava线程切换 hadoop特点 python学习文档 python如何定义变量 java入门 javaapplet java中string java求和 java中泛型 java替换字符串 java入门代码 java学习课程 java定义接口 java字符串比较 java时间戳转日期 java获取url参数 linux启动 shell编程学习 嵌入式linux驱动程序设计从入门到精通 刺激战场脚本 按键精灵脚本教程 自动回复机器人
当前位置: 首页 > 学习教程  > 编程语言

十分钟学会正则表达式

2020/12/28 19:48:37 文章标签:

十分钟学会正则表达式 (一)限定符 1、?:它前面的字符需要出现0次或1次 例如:used?可以匹配到use和used 2、*:它会匹配0个或多个字符 例如:ab*c可以匹配到ac,abc,abbbbbbc 3、:它会匹配一次及以上的字符 例如:abc可以匹配abc,abbbc,而不…

十分钟学会正则表达式

(一)限定符
1、?:它前面的字符需要出现0次或1次

例如:used?可以匹配到use和used
2、*:它会匹配0个或多个字符

例如:ab*c可以匹配到ac,abc,abbbbbbc
3、+:它会匹配一次及以上的字符

例如:ab+c可以匹配abc,abbbc,而不会匹配ac
4、{}:可以限定匹配的数量

例如:ab{6}c,则匹配到abbbbbbc,而要限定b的数量在2到6之间,则是ab{2,6}c,如果只是两次以上,则省略括号里的6,写成ab{2,}c
(二)"或"运算符
例如:a (cat|dog)匹配的是a cat和a dog
(三)字符类
[]:表示里面的内容只能取自于它们

例如:[a-z]表示所有小写的英文字母,[abc]能匹配到abc,aabbcc,abcc,[a-zA-Z]表示所有的英文字母,如果在[]前加上^,表示[]之外的字符
(四)元字符
\d:数字字符,等同于[0-9]
\w:单词字符
\s:空白符,包含Tab和换行符
\D:非数字字符
\W:非单词字符
\S:非空白符
.:代表任意字符,不包含换行符
^:匹配行首

例如:^a匹配abv,acccn
$:匹配行尾

例如:a 匹 配 t e a , c b a ∗ ∗ ( 五 ) 贪 婪 与 懒 惰 匹 配 ∗ ∗ 贪 婪 匹 配 : 正 则 表 达 式 通 常 的 行 为 是 匹 配 尽 可 能 多 的 字 符 , 比 如 这 个 表 达 式 : a . ∗ b , 它 将 会 匹 配 最 长 的 以 a 开 始 , 以 b 结 束 的 字 符 串 , 如 果 用 它 来 搜 索 a a b a b 的 话 , 它 会 匹 配 整 个 字 符 串 a a b a b 懒 惰 匹 配 : 就 是 匹 配 尽 可 能 少 的 字 符 , 在 能 使 整 个 匹 配 成 功 的 前 提 下 使 用 最 少 的 重 复 , 只 要 在 它 后 面 加 上 一 个 问 号 ? 即 可 , 例 如 a . ∗ ? b 匹 配 最 短 的 , 以 a 开 始 , 以 b 结 束 的 字 符 串 , 如 果 把 它 应 用 于 a a b a b 的 话 , 它 会 匹 配 a a b 和 a b , 为 什 么 第 一 个 匹 配 是 a a b ( 第 一 到 第 三 个 字 符 ) 而 不 是 a b ( 第 二 到 第 三 个 字 符 ) ? 简 单 地 说 , 因 为 正 则 表 达 式 有 一 条 比 懒 惰 / 贪 婪 规 则 优 先 级 更 高 的 规 则 , 就 是 : 最 先 开 始 的 匹 配 拥 有 最 高 的 优 先 权 ∗ ∗ ( 六 ) 常 用 的 正 则 表 达 式 大 全 ∗ ∗ 1. 数 字 : [ 0 − 9 ] ∗ 匹配tea,cba **(五)贪婪与懒惰匹配** 贪婪匹配:正则表达式通常的行为是匹配尽可能多的字符,比如这个表达式:a.*b,它将会匹配最长的以a开始,以b结束的字符串,如果用它来搜索aabab的话,它会匹配整个字符串aabab 懒惰匹配:就是匹配尽可能少的字符,在能使整个匹配成功的前提下使用最少的重复,只要在它后面加上一个问号?即可,例如a.*?b匹配最短的,以a开始,以b结束的字符串,如果把它应用于aabab的话,它会匹配aab和ab,为什么第一个匹配是aab(第一到第三个字符)而不是ab(第二到第三个字符)?简单地说,因为正则表达式有一条比懒惰/贪婪规则优先级更高的规则,就是:最先开始的匹配拥有最高的优先权 **(六)常用的正则表达式大全** 1.数字:^[0-9]* tea,cba()a.babaababaabab使使?a.?babaababaababaabab()1.[09]
2.n位的数字:^\d{n}$
3.至少n位的数字:^\d{n,}$
4.m-n位的数字:^\d{m,n}$
5.零和非零开头的数字:^(0|[1-9][0-9])$
6.非零开头的最多带两位小数的数字:^([1-9][0-9]
)+(.[0-9]{1,2})?$
7.带1-2位小数的正数或负数:^(-)?\d+(.\d{1,2})?$
8.正数、负数、和小数:^(-|+)?\d+(.\d+)?$
9.有两位小数的正实数:1+(.[0-9]{2})?$
10.有1~3位小数的正实数:2+(.[0-9]{1,3})?$
11.非零的正整数:3\d*$ 或 ^([1-9][0-9]){1,3}$ 或 ^+?[1-9][0-9]$
12.非零的负整数:^-[1-9][]0-9"$ 或 ^-[1-9]\d$
13.非负整数:^\d+$ 或 4\d*|0$
14.非正整数:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15.非负浮点数:^\d+(.\d+)?$ 或 5\d*.\d*|0.\d*[1-9]\d*|0?.0+|0$
16.非正浮点数:^((-\d+(.\d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]\d*.\d*|0.\d*[1-9]\d*))|0?.0+|0$
17.正浮点数:6\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]))$
18.负浮点数:^-([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])))$
19.浮点数:^(-?\d+)(.\d+)?$ 或 ^-?([1-9]\d*.\d*|0.\d*[1-9]\d*|0?.0+|0)$
1.汉字:7{0,}$
2.英文和数字:8+$ 或 9{4,40}$
3.长度为3-20的所有字符:^.{3,20}$
4.由26个英文字母组成的字符串:10+$
5.由26个大写英文字母组成的字符串:11+$
6.由26个小写英文字母组成的字符串:12+$
7.由数字和26个英文字母组成的字符串:13+$
8.由数字、26个英文字母或者下划线组成的字符串:^\w+$ 或 ^\w{3,20}$
9.中文、英文、数字包括下划线:14+$
10.中文、英文、数字但不包括下划线等符号:15+$ 或 16{2,20}$
1.Email地址:^\w+([-+.]\w+)@\w+([-.]\w+).\w+([-.]\w+)$
2.域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
3.InternetURL:[a-zA-z]+://[^\s]
或 ^http://([\w-]+.)+[\w-]+(/[\w-./?%&=])?$
4.手机号码:^(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}$
5.电话号码(“XXX-XXXXXXX”、“XXXX-XXXXXXXX”、“XXX-XXXXXXX”、“XXX-XXXXXXXX”、"XXXXXXX"和"XXXXXXXX):^((\d{3,4}-)|\d{3.4}-)?\d{7,8}$
6.国内电话号码(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
7.身份证号(15位、18位数字):^\d{15}|\d{18}$
8.短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
9.帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):17[a-zA-Z0-9_]{4,15}$
10.密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):18\w{5,17}$
11.强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.
\d)(?=.[a-z])(?=.[A-Z]).{8,10}$
12.日期格式:^\d{4}-\d{1,2}-\d{1,2}
13.一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$
14.一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
15.xml文件:^([a-zA-Z]±?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$
16.中文字符的正则表达式:[\u4e00-\u9fa5]
17.双字节字符:[^\x00-\xff] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))
18.空白行的正则表达式:\n\s*\r (可以用来删除空白行)
19.首尾空白字符的正则表达式:^\s*|\s*KaTeX parse error: Undefined control sequence: \s at position 4: 或(^\̲s̲*)|(\s*) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)
20.腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)
21.中国邮政编码:[1-9]\d{5}(?!\d) (中国邮政编码为6位数字)
22.IP地址:\d+.\d+.\d+.\d+ (提取IP地址时有用)
23.IP地址:((?😦?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
24.IP-v4地址:\b(?😦?: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]?)\b (提取IP地址时有用)
25.子网掩码:((?😦?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))
26.校验日期:^(?😦?!0000)[0-9]{4}-(?😦?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$(“yyyy-mm-dd“ 格式的日期校验,已考虑平闰年。)
27.抽取注释:


  1. 0-9 ↩︎

  2. 0-9 ↩︎

  3. 1-9 ↩︎

  4. 1-9 ↩︎

  5. 1-9 ↩︎

  6. 1-9 ↩︎

  7. \u4e00-\u9fa5 ↩︎

  8. A-Za-z0-9 ↩︎

  9. A-Za-z0-9 ↩︎

  10. A-Za-z ↩︎

  11. A-Z ↩︎

  12. a-z ↩︎

  13. A-Za-z0-9 ↩︎

  14. \u4E00-\u9FA5A-Za-z0-9_ ↩︎

  15. \u4E00-\u9FA5A-Za-z0-9 ↩︎

  16. \u4E00-\u9FA5A-Za-z0-9 ↩︎

  17. a-zA-Z ↩︎

  18. a-zA-Z ↩︎


本文链接: http://www.dtmao.cc/news_show_550391.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?