javascript中的正则表达式
字面量
var reg=/\bis\b/g
var reg=//
var reg=/\bis\b/;
eg:'is a is c'.replace(reg,'IS');
构造函数
var reg=new RegExp('\\bis\\b','g')
var reg=new RegExp('\\bis\\b','g');
eg:'is a ls iss is'.replace(reg,'ABC')
正则表达式由两种基本字符类型组成:
原义文本字符
a
元字符
有特殊含义的非字母字符
/b
* +? $ ^ .| \ () {} []
\f \t \cX
字符类
ab
我们可以使用元字符[]来构建一个简单类[abc]其中之一
eg:'a1b2c3b4'.replace(/[abc]/g,'X');
字符类取反
^反向类/负向类
eg:'a1b2c3b4'.replace(/[^abc]/g,'X');
范围类
[a-z] [a-zA-Z]
[1-10]
eg:'1233adfcADFAF'.replace(/[a-zA-Z]/g,'-')
预定义类
.回车换行外的所有字符
\d
\D
\s
\S
\w
\W非单词字符
边界匹配
^
$
\b
\B
eg:'this is a boy'.replace(/\bis\b/g,'0');
eg:'this is a boy'.replace(/is/g,'0');
量词
\d{3,6}
eg:'123456'.replace(/\d{3,6}?/,'x')非贪婪匹配
分组
(is) (is|a|k)
eg:'sis our is is ousi'.replace(/(is)/g,'x')
反向引用
eg:'2015-12-25'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$3/$2/$1')
"25/12/2015"
前瞻
\w(?=\d)正则加断言
eg:'a2*3'.replace(/\w(?=\d)/g,'哈啊')
后顾
js属性
global
ignoreCase
multiline
var reg=/\w/;
reg.global;
reg.ignoreCase;
reg.multiline
reg.source
方法
test(str)
eg:var reg=/\w/g;
while(reg.test('ab')){
console.log(reg.lastIndex);
}
exec(str)
var reg=/.\w(\d)/g;
eg:var str='a1234r342t3435';
reg.exec(str);
split()
eg:'a1b2c3d4'.split(/\d/g);
replace()
replace(str,replaceStr)
replace(reg,replaceStr)
replace(reg,function)
function会在每次匹配替换的时候调用
有四个参数
1.匹配字符串
2.正则表达式分组内容,没有分组则没有该内容
3匹配项在字符串中的index;
4原字符串
eg:'aosod3f4g5'.replace(/(\d)/, function (match, group, index, normal)
{ console.log(match + 'match');
console.log(group + 'group');
console.log(index + 'index');
console.log(normal + 'normal');
});