@demonly
2017-04-06T08:40:48.000000Z
字数 1538
阅读 1699
JavaScript
正则表达式用于表示匹配字符串的规则,正则表达式以"/"开始和结束。正则表达式对大小写敏感。
特殊字符串表达特殊的含义,如果要检测"*"等特殊字符,需要在前面加上\进行转义。
| 特殊字符 | 含义 | 例子 |
|---|---|---|
| . | 匹配 \n 以外的所有字符 | |
| ^ | 表示字符串开头 | "^2"表示以2开始 |
| $ | 表示字符串的结尾,如果允许跨行检索,那么也表示行尾 | "2$"表示以2结尾 |
| [] | 中括号表达式,匹配中括号内的任意字符,在中括号的开头加上"^"表示补集 | [0-9a-zA-Z]表示\w,[^0-9a-zA-Z]表示\W |
| () | 表示将括号内分组并标记为子表达式,在开头加上"?:"表示仅分组不标记为子表达式。\2表示重复第二子表达式 | "(abc)\1"匹配"abcabc","(?:abc)"仅分组不编号 |
| * | 匹配前面的子表达式零次或多次。在后面加"?"采用非贪婪算法,即匹配尽量少的字符串 | "x*"匹配零个或以上个"x" |
| + | 匹配前面的子表达式一次或多次。在后面加"?"采用非贪婪算法,即匹配尽量少的字符串 | "x+"匹配一个或以上个"x" |
| ? | 匹配前面的子表达式一次或零次 | |
| ?: | 对后面得子表达式进行非获取匹配,即仅匹配不保存 | |
| | | 或,可以连续使用 | "x|y|z"匹配 x或 y或 z |
| {} | {n}重复前一个表达式 n次,{n,}少于 n次,{n,m}大于 n次小于 m次 | "\d{4}"匹配四个数字 |
这类特殊字符原本是字母,在表达特殊含义时需要用"\"转义。
| 特殊字符 | 含义 |
|---|---|
| \d | 匹配所有数字 |
| \D | 匹配非数字 |
| \w | 匹配数字字母或下划线 |
| \W | 匹配非数字字母或下划线 |
| \s | 匹配空格符、换行符、TAB、换页符 |
| \S | 匹配非空格符、换行符、TAB、换页符 |
| \f | 匹配一个换页符。 |
| \n | 匹配一个换行符。 |
| \r | 匹配一个回车符。 |
| \t | 匹配一个制表符。 |
| \v | 匹配一个垂直制表符。 |
构建一个正则对象有两种写法
var reg = new RegExp("pattern", "flag")var reg = /pattern/flag
其中两个参数,pattern 接受一个正则表达式,也可以接受"$1"来调用第一个子表达式,flag 表示比对的方式
m:允许跨行检索
g:全局检索,通常只会匹配到第一个,全局检索可以匹配到所有情况
i:忽略大小写
var reg = new RegExp("abc", "mg")
一个正则对象有四个属性。
正则对象带有一些方法
reg.test("abc") // truereg.exec("abcd") // "abc"reg.toString() // /abc/reg.compile("/d{4}")在字符串的方法中也可以使用到正则表达式
"babcd".search(/abc/) //1"abbbcd".replace(/b+?/,"1") //"a1bbcd""abbbcdbbd".match(/b+/g) //["bbb","bb"]"abbbcdbbd".split(/b+/) //["a","cd","d"]