首页 > 代码库 > 正则表达式日记

正则表达式日记

一、界定符

表示一个正则表达式的开始和结束

(1)//
(2)##
(3){}
例:‘/[0-9]/‘

二、原子

正则表达式中的最小匹配单位,通常它只是Unicode编码表中的某个字符
(1)可见原子:Unicode编码表中用键盘输出后肉眼可见的字符
例:
标点
英文字母数字
汉字、日文、阿拉伯文等其他语言文字
数理化公式符号
其他可见字符
(2)不可见原子:Unicode编码表中用键盘输出后肉眼不可见的字符
例:
换行符 \n
回车\r
制表符 \t
空格
其他不可见符号
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\n\r\t\v]
(4)\S 匹配一个可见原子,即[^\f\n\r\t\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]+$

正则检测工具:http://tool.chinaz.com/regex/

正则表达式日记