type
status
date
slug
summary
tags
category
icon
password

行的起始^和结束$

问:如何找出所有的cat,而不是scat,vacation等...
答:使用 ^ 和 $ 正则元字符来限制

字符组 []

问:如何匹配 gray 或 grey
答: [ea]表示匹配 e 或 a
问: 如何匹配 H1- H6的html标签
答:

排除型字符组 [^]

问:匹配除了1-6的数字
答:
  1. 这里的排除字符,是在字符组里面的 /[^ae]/ 表示“除了ae” 和 之前表示范围的/^[ae]/ “以a或e开头” 的含义不同。
  1. 连字符只有在[]中才有含义。/[1-9a-zA-Z]/表示所有数字和字母,/1-6/这里的连字符只是普通字符。

占位符点 .

问:如何匹配01.02.03,01-02-03,01/02/03
答:
  1. . 来表示任意字符,这种可能还会匹配到01*02*03,01 023034等,类似形式
  1. [-./]来匹配当前存在的字符,更准确。只能匹配以上三种。这里要注意的是[-./],如果[.-/](错误写法)点在元字符的最前面,.匹配的是任意字符。而[-./]就匹配的是一个普通的 .
  1. 元字符在字符组的最前面才有意义。如[^123]表示:除了123的其他字符;[.123] 表示:任意字符+123
  1. [123^123],[123.123] 中间的^.没有任何元字符的意义,只是平时用的普通字符。
  1. 具体如何使用还需要看自己的需求。

多选结构 或 |

问:如何匹配 gray 或 grey
答:
  1. 为什么不能/gr[a|e]y/(错误写法)正则中在()里面使用 | 是有意义的表示"或",在[]使用只是一个普通字符。
  1. (|)[]区别:多选结构(|)可以匹配多个字符,而[]只能匹配单个字符。
问:如何同时匹配First Street1st street
答:以下两种写法等价
问:/^From|Subject|Date://^(From|Subject|Date):/的区别?
  1. 第一个匹配 ^FromSubjectDate:
  1. 第二个匹配 ^From:^Subject:^Date:以这三个单词为行起始位置匹配

忽略大小写 i

问:如何匹配DATEdate
答:

单词分界符 \b

问:如何找出所有的cat,而不是scat,vacation等...
答:
  1. 类似于单词自己的起始^ 结束$
  1. 数字的小数点前后,都可以使用分界符

量词

可选项 ?

问:如何匹配 color 和 colour
答:?代表 u 可以出现,也可以不出现,表示出现0次到1次
问:如何匹配July fourth 表示7月可能:JulyJul表示4可能有:fourth4th4
答:
  1. 配合()界定多个字符

通配符

问:如何匹配所有以.txt为结尾的文件
答:*表示出现0次到任意多次

重复出现 +

问:如何匹配 H1- H6的html标签
答:
  1. 属于量词的一种,用来表示0到无数次
  1. 空格在正则表达式中也是一个普通字符。和123456没什么区别
问:如何匹配<HR SIZE=14><HR>
答:
  1. +表示必须要出现一次,HR后面的空格是必须要有的所以需要用+,等号后面的数字是必须要有的所以[0-9]+,字符组可以不用加()直接使用+作用于整个字符组。
  1. ?表示当前部分出现0次或者1次。也就是说可能有SIZE=14也有可能没有。

区间 {}

问:匹配出1到5个任意数字

三种量词总结

次数下限
次数上限
用区间表示
1
{0,1}
*
{0,}
+
1
{1,}

反向引用 \1

问:如何匹配前后重复的单词,匹配如the the,而不匹配the theory
答:
  1. 单词分界\b是用来限制不匹配the theory的情况
  1. ()是用来标识,\1反向引用的范围
  1. \1代表和([A-Za-z]+)匹配一致的内容,如果有多个括号可以继续使用\2\3,如:/([a-z])([0-9]+)\1\2/

转义\

问:如何匹配www.baidu.com
答:
  1. 因为.在正则中是有意义的,表示任意字符。所以如果想在正则中表示一个普通的.,需要在前面添加\. 进行转义。这样正则就会认为这只是一个普通的.
  1. [\.]错误写法,转义符在字符组中没有任何意义。
  1. 如果\后面放的不是元字符,如\1那么它就是正则的一个语法,代表反向引用

一些小练习

变量名

问:如何匹配变量名,包含数字字母及下划线,但是不能以数字开头
答:

引号内的字符串

问:如何匹配引号内的字符串。如:"字符串"
答:[^"]字符组中匹配为非字符串的内容。

美元

问:如何匹配美元金额
答:

小时

问:如何匹配 9:17 am或者 12:30 pm 12小时制
答:
问:匹配24小时制
答:
 
文件上传下载正则表达式(二)进阶