一、入门
1.查找单词hi
正则表达式:/bhi/b
/b 单词的开头或结尾,也就是单词的分界处
2.hi后面不远处跟着一个Lucy
正则表达式:/bhi/b.*/bLucy/b
. 匹配除换行符以外的任意字符
*前边的内容可以连续重复使用任意次
.*连在一起就意味着任意数量的不包含换行的字符
3.以0开头,然后是两个数字,然后是一个连字号“-”,最后是8个数字:
正则表达式:0/d/d-/d/d/d/d/d/d/d/d
/d 匹配数字
也可以这样写这个表达式:0/d{2}-/d{8}
二、元字符
1.以字母a开头的单词,先是某个单词开始处(/b),然后是字母a,然后是任意数量的字母或数字(/w*),最后是单词结束处(/b):
正则表达式: /ba/w*/b
/w 匹配字母或数字或下划线或汉字
2. 1个或更多连续的数字
正则表达式:/d+
*匹配重复任意次(可能是0次),而+则匹配重复1次或更多次
3. 6个字符的单词
正则表达式:/b/w{6}/b
4. QQ号必须为5位到12位数字
正则表达式:^/d{5,12}$
^ 匹配字符串的开始
$ 匹配字符串的结束
三、字符转义
要查找/本身
正则表达式://
/ 字符转义
四、重复
* | 重复零次或更多次 |
+ | 重复一次或更多次 |
? | 重复零次或一次 |
{n} | 重复n次 |
{n,} | 重复n次或更多次 |
{n,m} | 重复n到m次 |
五、字符类
[aeiou] 匹配任何一个英文元音字母
[.?!] 匹配标点符号(.或?或!)
[0-9] 一位数字
[a-z0-9A-Z_] /w(如果只考虑英文的话)
/(?0/d{2}[) -]?/d{8} 像(010)88886666,或022-22334455,或02912345678等
首先是一个转义字符/(,它能出现0次或1次(?),然后是一个0,后面跟着2个数字(/d{2}),然后是)或-或空格中的一个,它出现1次或不出现(?),最后是8个数字(/d{8})。
六、分支语句
| 把不同的规则分隔开
1. 一种是三位区号,8位本地号(如010-12345678),一种是4位区号,7位本地号(如:0376-2233445)
正则表达式:0/d{2}-/d{8}|0/d{3}-/d{7}
2. 匹配3位区号的电话号码,其中区号可以用小括号括起来,也可以不用,区号与本地号间可以用连字号或空格间隔,也可以没有间隔
(0710)-12345678 或 (0710)-12345678 或0710-12345678或 071012345678
正则表达式:/(0/d{2}/)[- ]?/d{8}|0/d{2}[- ]?/d{8}
3.美国邮编的规则是5位数字,或者用连字号间隔的9位数字
正则表达式:/d{5}-/d{4}|/d{5}
七、分组
() 分组
1. 256.300.888.999
正则表达式:(/d{1,3}/.){3}/d{1,3}
/d{1,3}匹配1到3位的数字,(/d{1,3}/.){3}匹配三位数字加上一个英文句号(这个整体也就是这个分组)重复3次,最后再加上一个一到三位的数字(/d{1,3})
2.IP地址:每个数字都不能大于255
正则表达式:((2[0-4]/d|25[0-5]|[01]?/d/d?)/.){3}(2[0-4]/d|25[0-5]|[01]?/d/d?)
八、反义:查找不属于某个能简单定义的字符类的字符。比如想查找除了数字以外
/W 匹配任意不是字母,数字,下划线,汉字的字符
/S 匹配任意不是空白符的字符
/D 匹配任意非数字的字符
/B 匹配不是单词开头或结束的位置
[^x] 匹配除了x以外的任意字符
[^aeiou] 匹配除了aeiou这几个字母以外的任意字符
/S+ 匹配不包含空白符的字符串。
<a[^>]+>匹配用尖括号括起来的以a开头的字符串