创建正则表达式
使用字面量
/** * /正则表达式主体/修饰符(可选) */ var r = /(\d+)/g;
使用Reg构造器
var r = new RegExp("(\d+)","g");
正则表达式修饰符
修饰符 | 含义 |
---|---|
g | 全局匹配 |
i | 忽略大小写 |
m | 多行匹配 |
正则表达式特殊字符
元字符
字符 含义 \d 匹配一个数字 \D 匹配一个非数字字符 \w 匹配一个单字字符(字母、数字或者下划线) \W 匹配一个非单字字符 \s 匹配一个空白字符,包括空格、制表符、换页符和换行符 \S 匹配一个非空白字符 \b 匹配一个单词边界 量词
字符 含义 * 匹配一个表达式零次或多次 + 匹配一个表达式一次或多次 ? 匹配一个表达式零次或一次 {n} 匹配一个表达式n次 {n,m} 匹配一个表达式至少n次,至多m次 [xyz] 匹配方括号的中任意字符 [^xyz] 匹配任何没有包含在方括号中的字符 x y
正则表达式分组模式
字符 | 含义 |
---|---|
(x) | 匹配 ‘x’ 并且记住匹配项,(捕获型) |
(?:x) | 匹配 ‘x’ 但是不记住匹配项(非捕获型) |
x(?=y) | 匹配’x’仅仅当’x’后面跟着’y’(向前正向匹配) |
x(?!y) | 匹配’x’仅仅当’x’后面不跟着’y’(向前负向匹配) |
正则表达式方法
字符串方法
方法 含义 replace 在字符串中用一些字符替换另一些字符或与正则表达式匹配的子串 search 查找字符串中指定的子字符串,或与正则表达式相匹配的子字符串,并返回子串的起始位置 e.g.
var str = "abcdefg", r = /bc/g; console.log(str.search(r)); //1 console.log(str.replace(r,"12")); //a12defg
正则方法
方法 含义 test 检测一个字符串是否匹配某个模式,匹配则返回true,否则返回false exec 检索字符串中的正则表达式的匹配。返回一个数组,存放匹配的结果 e.g.
var str = "abcdefgbcasbc", r = /(bc)/g; console.log( r.test(str) ); // true console.log( r.exec(str) ); //["bc", "bc", index: 1, input: "abcdefgbcasbc"] console.log( r.exec(str) ); //["bc", "bc", index: 7, input: "abcdefgbcasbc"]
注意:使用test或者exec方法时,对同一字符串多次匹配,每次匹配的起点是从正则表达式对象的lastIndex开始的。使用g修饰符时lastIndex每次执行会改变
e.g.
var r = /aaa/g, str = "aaaAaaaBcdefg"; r.test(str); // true, r.lastIndex = 3 r.test(str); // true, r.lastIndex = 7 r.test(str); // false,r.lastIndex = 0