正则表达式入门小结

正则表达式语言由俩种基本字符组成:元字符和普通字符。
元字符,即特殊符号,并不代表本身的字符意义,根据其在正则表达式语言中代表的特殊含义来匹配目标字符。
普通字符,即代表本身的字符意义,如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 任意一个非数字
\b 代表字符在单词的开始或结束位置,
如\bF,c\b  代表以F开头的单词或c结尾的单词
\B 代表字符在非单词开始或结束位置,
如\Bz. 匹配"add czppp",结果是zp
[a-k0-9] a~k之间任意一个字符 或 0~9之间任意一个数字,[]代表范围内的字符
[^fuk] 匹配f、u或k之外的任意一个字符,[^ ] 代表除..之外的字符
^a 匹配的字符a在最开头位置
a$ 匹配的字符a在末尾位置

                转义字符

\r 代表回车符
\n 代表换行符
\t 代表制表符

2、元字符规律小结

  • \与小写字母组合代表所包含意义匹配字符,大写字母即变成取反,如\d、\D 或 \w、\W。
  • 元字符与?组合,均是尽可能少的匹配,如+? 或 *? 或 ?? 或 {5,}? 。
  • 要元字符代表普通字符,需要再元字符前加\。如\^ 或 \$ 或 \* 等。

3、参考例子及练习

  • 贪婪模式&懒惰模式参考
当有字符串:aabab
① a.*b 匹配到的是:aabab(贪婪模式)
② a.*?b 匹配到的是:aab及ab(懒惰模式)
③ a.+?b匹配到的是:aab
  • 在“where are you"中匹配单词are
\bare\b
  • 输入的字符在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-Z\d]{1,15}[.](com|org)$
  • 匹配常用email规则(字母数字下划线,长度3-15)@(字母数字,长度2~4).(字母,长度2~4)
^\w{3,15}@[a-zA-Z\d]{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.:(19\d\d|20\d\d)
②月MM允许输入01~12或者1~12:(\d|0\d|1[0-2])
③日DD允许输入01~31或者1~31:(\d|0\d|1\d|2\d|3[0-1])
④连接符:[-/.]
结果如下:
^(19\d\d|20\d\d)[-/.](\d|0\d|1[0-2])[-/.](\d|0\d|1\d|2\d|3[0-1])$

 

 
posted @ 2018-12-13 17:59  牧羊神  阅读(196)  评论(0编辑  收藏  举报