正则表达式
标准字符集合
- n 代表换行符
- t 制表符
- \ 代表本身
- ^ , $ , ( , ) , { , } , ? , , * , | , [ , ] 匹配这些字符本身
- d 匹配任意一个数字,0-9之间任意一个
- D 匹配除了数字外所有
- w 匹配任意一个字母数字下划线,A-Z , a-z ,0-9, _
- W 匹配除了字母数字下划线以外的
- s 匹配空格,制表符,换行符等空白字符中其中以一个
- S 匹配非空格,制表符,换行符等空白字符
- . 小数点可以匹配任意一个字符(除了换行符),如果匹配换行符一般用[sS]
自定义字符集合
[ ]方括号匹配方式,能够匹配方括号中任意一个字符
注意:
- 正则表达式的特殊符号,被包含到中括号中,则失去特殊意义,除了^,-之外。
- 标准字符集合,除了小数点外,如果被包含到中括号中,自定义字符集合将包含该集合。比如:
- [d.- ] 将匹配:数字、小数点、 、-
- [ab5@] 匹配'a'或'b'或'5'或'@'
- [^abc] 匹配'a','b','c'以外的任意字符
- [f-k] 匹配f~k之间的字符
- [^A-F0-3] 匹配A-F,0-3之外的任意字符
量词
注意:
- 贪婪模式:匹配字符越多越好(默认)
- 非贪婪模式:匹配字符越少越好(量词后面加'?')
- 表达式重复n次,比如:d{6}等于dddddd,
- {m,n} 表达式至少重复m次,最多重复n次
- {m,} 表达式至少m次
- ? 匹配表达式0次或者1次,相当于{0,1}
- 表达式至少出现1次,相当于{1,}
- * 表达式不出现或出现任意次,相当于{0,}
字符边界
- ^ 字符串开始的地方
- $ 字符串结束的地方
- b 匹配一个单词边界(前面的字符和后面的字符不全是w)
选择符和分组
- | 左右两个表达式之间'或'关系,匹配左边或者右边
- ()
- 在被修饰匹配次数的时候,括号中的表达式可以作为整体被修饰
- 取匹配结果的时候,括号中的表达式匹配到的内容可以被单独得到
- 每一对括号会分配一个编号,使用()的捕获根据左括号的顺序从1开始自动编号。捕获元素编号为零的第一个捕获是由整个正则表达式模式匹配的文本。
- (?:Expression) 一些表达式中,不得不使用(),但又不需要保存()中子表达式匹配的内容,这时可以用非捕获组来抵消使用()带来的副作用
预搜索(零宽断言)
- (?=exp) 断言自身出现的位置的后面能匹配表达式
eg: [a-z] (?=ing)
找出以ing
结尾的 - (?<=exp) 断言自身出现的位置的前面能匹配表达式
- (?!exp) 断言此位置的后面不能匹配表达式
- (?<!exp) 断言此位置的前面不能匹配表达式
练习
匹配邮箱
代码语言:javascript复制[w-] @[a-zA-Z0-9] (.[a-zA-Z]{2,4}){1,2}
常用正则
Q.E.D.