正则表达式入门小结
Posted cheerjude
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式入门小结相关的知识,希望对你有一定的参考价值。
正则表达式语言由俩种基本字符组成:元字符和普通字符。
元字符,即特殊符号,并不代表本身的字符意义,根据其在正则表达式语言中代表的特殊含义来匹配目标字符。
普通字符,即代表本身的字符意义,如1-9,a-z等。
1、基础且常用的特殊字符小结
代表匹配次数的元字符
{n} | 重复n次 |
{n,m} | 重复n到m次 |
a? | 字符 a <=1次,相当于a{0,1} |
a+ | 字符a >=1次,相当于a{1,} |
a* | 字符a >=0次,相当于a{0,} |
( ) | 匹配目标值的分组,每个组自动有组号,从左到右组号为1,2,3... |
a{4} a{1,5} |
匹配字符a 长度为4次 匹配字符a 长度1~5次 |
a.*b | 贪婪模式,匹配a和b之间的所有字符 |
a.*?b | 懒惰模式,尽量少的匹配a和b之间的字符,最少为ab |
*? | 重复任意次,但尽可能少重复 |
+? | 重复1次或更多次,但尽可能少重复 |
?? | 重复0次或1次,但尽可能少重复 |
{n,m}? | 重复n到m次,但尽可能少重复 |
{n, }? | 重复n次以上,但尽可能少重复 |
代表匹配具体字符
. | 匹配除换行符以外的任意字符 |
w | 任意一个字母、数字或下划线,即A~Z,a~z,0~9,_ |
W | 任意一个非字母或数字或下划线的字符 |
s | 任意一个空格、制表符、换页符等空白字符 |
S | 任意一个非空白符的字符 |
d | 0~9任意一个数字 |
D | 任意一个非数字 |
代表字符在单词的开始或结束位置, 如F,c 代表以F开头的单词或c结尾的单词 |
|
B | 代表字符在非单词开始或结束位置, 如Bz. 匹配"add czppp",结果是zp |
[a-k0-9] | a~k之间任意一个字符 或 0~9之间任意一个数字,[]代表范围内的字符 |
[^fuk] | 匹配f、u或k之外的任意一个字符,[^ ] 代表除..之外的字符 |
^a | 匹配的字符a在最开头位置 |
a$ | 匹配的字符a在末尾位置 |
转义字符
代表回车符 | |
代表换行符 | |
代表制表符 |
2、元字符规律小结
- 与小写字母组合代表所包含意义匹配字符,大写字母即变成取反,如d、D 或 w、W。
- 元字符与?组合,均是尽可能少的匹配,如+? 或 *? 或 ?? 或 {5,}? 。
- 要元字符代表普通字符,需要再元字符前加。如^ 或 $ 或 * 等。
3、参考例子及练习
- 贪婪模式&懒惰模式参考
当有字符串:aabab
① a.*b 匹配到的是:aabab(贪婪模式)
② a.*?b 匹配到的是:aab及ab(懒惰模式)
③ a.+?b匹配到的是:aab
- 在“where are you"中匹配单词are
are
- 输入的字符在a-g之间并且最大长度为3最小长度为1
[a-g]{1,3}
- 匹配3位区号-8位电话号码,如010-12345678
^d{3}-d{8}$
- 验证最小长度为3最大长度为7的数字
d{3,7}
- 验证如INV190203 或 inv820830,前3位不区分大小写的英文字母,剩余8位是数字
[a-zA-Z]{3}d{8}
- 匹配常用URL规则(以www开头,域名是字母数字,长度1-15,以.com或者.org结束)
^www[.][a-zA-Zd]{1,15}[.](com|org)$
- 匹配常用email规则(字母数字下划线,长度3-15)@(字母数字,长度2~4).(字母,长度2~4)
^w{3,15}@[a-zA-Zd]{2,4}.[a-zA-Z]{2,4}$
- 验证值在0-25的数字
(([0-9])|([0-1][0-9])|([0-2][0-5]))$
- 验证格式为 YYYY/MM/DD 或 YYYY-MM-DD 或 YYYY.MM.DD 的日期
① 年YYYY允许用户输入年份1900-2099.:(19dd|20dd)
②月MM允许输入01~12或者1~12:(d|0d|1[0-2])
③日DD允许输入01~31或者1~31:(d|0d|1d|2d|3[0-1])
④连接符:[-/.]
结果如下:
^(19dd|20dd)[-/.](d|0d|1[0-2])[-/.](d|0d|1d|2d|3[0-1])$