《正则表达式必知必会(修订版)》笔记

正则表达式也是前端的一块非常重要的知识,静下心来花了一点时间把《正则表达式必知必会》翻阅了一遍,正则也就没有以前觉得那样难懂了。

因此,对于这本书也做了点小记录以供日后复习。我只做了目前觉得对自己有用的记录,日后若是需要补充再补充。

 

基本的元字符:

元字符 说明
. 匹配任意单个字符
| 逻辑或操作
[] 匹配字符集合中的一个字符
[^] 对字符集合求非
- 定义一个区间
\ 对下一个字符转义

 

 

 

 

 

 

 

数量元字符:

元字符 说明
* 匹配前一个字符(子表达式)的零次或多次重复
*? *的懒惰型版本
+ 匹配前一个字符(子表达式)的一次或多次重复
+? +的懒惰型版本
? 匹配前一个字符(子表达式)的零次或一次重复
{n} 匹配前一个字符(子表达式)的n次重复
{m, n} 匹配前一个字符(子表达式)至少m次且至多m次重复
{n, } 匹配前一个字符(子表达式)至少n次或更多次重复
{n, }? {n, }的懒惰型版本

 

 

 

 

 

 

 

 

 

 

位置元字符:

元字符 说明
^ 或 \A 匹配字符串的开头
$ 或 \Z 匹配字符串的结束
\b 匹配单词边界(开头和结尾);开头和结尾部分各需要一个\b
\B \b 的反义

 

 

 

 

 

 

特殊字符元字符:

元字符 说明
\d 匹配任意数字字符
\D \d 的反义,匹配任意非数字字符
\n 换行符
\r 回车符
\s 匹配一个空白字符
\S \s 的反义,匹配一个非空白字符
\w 匹配任意字母数字或下划线字符
\W \w 的反义,匹配任意非字母数字或非下划线字符
\x 匹配一个十六进制数字
\0 匹配一个八进制数字

 

 

 

 

 

 

 

 

 

 

 

另外:()用来定义一个子表达式

 

顺带记录一些常用的正则表达式,也有助于对之前元字符的理解:

  • 数字:^[0-9]*$
  • n位数字:^\d{n}$
  • 至少n位数字:^\d{n,}$
  • m-n位数字:^\d{m,n}$
  • 零和非零开头的数字:^(0|[1-9][0-9]*)$
  • 非零开头的带两位小数的数字:^[1-9][0-9]*.[0-9]{2}$
  • 浮点数:^(-?\d+)(.\d+)?$
  • 汉字:^[\u4e00-\u9fa5]{0,}$
  • 英文和数字:^[A-Za-z0-9]+$
  • 长度为1到20的所有字符:^.{1,20}$
  • 电子邮箱地址:^(\w+.)*\w@(\w+.)*+[A-Za-z]+$
  • URL(仅匹配协议名,主机名,可选端口号,文件路径):https?://[-\w.]+(:\d+)?(/([\w/_.]*)?)?
  • 完整的URL(还匹配了用户名和口令字,查询字符串):^https?://(\w*:\w*@)?[-\w.]+(:\d+)?(/([\w/_.]*(\?\S+)?)?)?$  
  • 手机号码:^1[3|4|5|7|8]\d{9}$
  • QQ号:^[1-9]\d{4,}$
  • 中国邮政编码:^[1-9]\d{5}$
  • IP地址:(((\d{1,2})|(1\d{2}|)|(2[0-4]\d)|(25[0-5])).){3}((\d{1,2})|(1\d{2}|)|(2[0-4]\d)|(25[0-5]))

 

posted @ 2016-10-19 21:17  scoop_zm  阅读(1554)  评论(0编辑  收藏  举报