@demonly
2017-04-06T08:40:48.000000Z
字数 1538
阅读 1618
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") // true
reg.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"]