一、界定符
表示一个正则表达式的开始和结束
(1)//
(2)##
(3){}
例:'/[0-9]/'
二、原子
正则表达式中的最小匹配单位,通常它只是Unicode编码表中的某个字符
(1)可见原子:Unicode编码表中用键盘输出后肉眼可见的字符
例:
标点
英文字母数字
汉字、日文、阿拉伯文等其他语言文字
数理化公式符号
其他可见字符
(2)不可见原子:Unicode编码表中用键盘输出后肉眼不可见的字符
例:
换行符
回车
制表符
空格
其他不可见符号
patten中若有中文汉字,建议换成unicode编码
三、元字符
(1)定义原子的筛选方式
(2)把某一类原子,比较类似的原子(英文字母abcd和数字1234)进行归类,给出一个缩写来简化正则表达式的书写方式。
1、原子的筛选方式
(1)[] :匹配出现在[]中的任意一个原子
(2)| :或运算。匹配|符号左右两边的任意一个
(3)[^ ] :取反。这里^必须和[紧挨着,才表示匹配除了[]里面任意原子的字符
注:[78^9]表示匹配,7、8、^、9任意一个
(4). :任意字符(除换行符外)
2、原子的集合
. 匹配出了换行符之外的任意字符
(1)d 匹配任意一个十进制数字,即 [0-9]
(2)D 匹配任意一个非十进制的数字,即 [^0-9]
(3)s 匹配一个不可见原子,即 [f
v]
(4)S 匹配一个可见原子,即[^f
v]
(5)w 匹配任意一个数字、字母或下划线,即 [0-9a-zA-Z_]
(6)W 匹配任意一个非数字、字母或下划线,即 [^0-9a-zA-Z_]
四、量词
(1){n} 表示其前面的原子恰好出现n次。
(2){n,} 表示其前面的原子最少出现n次。
(3){n,m} 表示其前面的原子最少出现n次,最多出现m次。
(4)* 匹配0次,1次,多次其前面的原子,即{0,}。
(5)+ 匹配1次,多次其前面的原子,即{1,}。
(6)? 匹配0次,1次其前面的原子,即{0,1}。
五、边界控制
(1)^ :匹配字符串开始的位置 ^string:只能匹配一开始就为string字符串,不能有空格
(2)$ :匹配字符串结尾的位置
六、模式单元
() 括号的整体为一个原子
七、修正模式
标识:在正则表达式的末尾,也就是斜杠(/)的后面,加修正模式的标识
(1)u :贪婪匹配,匹配结果存在歧义时,匹配结果越多越好。默认是贪婪模式。
例:'/[a-zA-Z0-9]+/'
(2)U :懒惰匹配,匹配结果存在歧义时,匹配结果越少越好。
例:'/[a-zA-Z0-9]+/U'
(3)i :忽略英文字母大小写
(4)x :忽略空白
(5)s :让元字符“.”匹配包括换行符在内的所有字符
八、实例
(1)非空:.+
(2)浮点:小数点后两位:d+.d{2}$
(3)手机:^1[358]d{9}$
(4)邮箱:^w+(.w+)*@w+(.w+)+$
(5)URL:^(https?://)?(w+.)+[a-zA-Z]+$