一.正则表达式常用方法
1.test:正则去匹配字符串,如果匹配成功就返回真,如果匹配失败就返回假
字符串判断
返回真假
正则.test(字符串)
例子:是否有不是数字的字符
var str='abcdef'; var re=/b/; alert(re.test(str));
/*转义字符 s:空格 S:非空格 d:数字 D:非数字 w:字符(字母、数字、下划线_) W:非字符 */ var str='37482t9348791'; var re=/D/; if(re.test(str)){ alert('不全是数字'); }else{ alert('全是数字'); }
2.search:正则去匹配字符串,如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回-1
字符串搜索
返回出现的位置
字符串.search(正则)
忽略大小写:i-ignore
var str='abcdef'; //不区分大小写 var re=/B/i; // var re=new RegExp('B','i'); alert(str.search(re));
3.match:正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配失败就返回null
获取匹配的项目
返回数组
字符串.match(正则)
量词:+
全局匹配:g-global
例子:找出所有数字
//正则默认:正则匹配成功就会结束,不会继续匹配,如果想全部查找,就要加标识g(全局匹配) //量词:匹配不确定的位数 //+:至少出现一次 var str='haj123sdk54hask33dkhalsd879'; // var re=/d/g; //[1,2,3,5,4,3,3,8,7,9] // var re=/dd/g; //[12,54,33,87] // var re=/ddd/g; //[123,879] // var re=/dddd/g; //null var re=/d+/g; alert(str.match(re));
4.replace:正则去匹配字符串,匹配成功的字符去替换成新的字符串
替换所有匹配
返回替换后的字符串
字符串.replace(正则,新的字符串)
例子:敏感词过滤
匹配子项:小括号() (还有另外一个意思,分组操作)
把正则的整体叫做(母亲),然后把左边第一个小括号里面的正则,叫做这个第一个子项(母亲的第一个孩子),第二个小括号就是第二个孩子
var str='abc'; // var re=/(a)(b)(c)/;//['abc','a','b','c']; var re=/(a)(b)(c)/g;//['abc'] alert(str.match(re));
例子:日期格式化
var str='aaa'; // var re=/a/; //baa // var re=/a/g; //bbb var re=/a+/g; //b str=str.replace(re,'b'); alert(str);
敏感词过滤
替换前<br /> <textarea>菲称仁爱礁附近17艘中国船均在菲军监视之下</textarea><br /> 替换后<br /> <textarea></textarea><br /> <input type="button" id="btn" value="确定" />
// |:或的意思 //replace:第二个参数,可以是字符串,也可以是一个回调函数 var aT=document.getElementsByTagName('textarea'); var Btn=document.getElementById('btn'); var re=/菲称|中国船|监视之下/g; Btn.onclick=function(){ // aT[1].value= aT[0].value.replace(re,'*'); aT[1].value= aT[0].value.replace(re,function(str){ //函数的第一个参数,就是匹配成功的字符 var result=''; for (var i=0;i<str.length;i++) { result+='*'; } return result; }); }
日期格式化
var str='2018-1-23'; var re=/(d+)(-)/g; str=str.replace(re,function($0,$1,$2){ //第一个参数:$0(母亲),第二个参数:$1(第一个孩子) //第二个参数:$2(第二个孩子) //alert($2); return $1+'.';//2018.1.23 }) alert(str);
二.正则表达式字符类
字符类:一组相似的元素
[]中括号的整体代表一个字符
1.任意字符
[abc]
例子:o[usb]t——obt、ost、out
var str='abc';//true var str1='abdc'; //false var re=/a[bde]c/; alert(re.test(str));
2.范围
[a-z]、[0-9]
例子:id[0-9]——id0、id5
3.排除
如果^写在[]里面的话,就代表排除的意思
[^a]
例子:o[^0-9]t——oat、o?t、ot
var str='abc';//false var str='awc';//true var re=/a[^bde]c/; alert(re.test(str));
去除标签
替换前<br /> <textarea></textarea><br /> 替换后<br /> <textarea></textarea><br /> <input type="button" id="btn" value="确定" />
var aT=document.getElementsByTagName('textarea'); var Btn=document.getElementById('btn'); // var re=/<w+>/g; var re=/<[^>]+>/g; Btn.onclick=function(){ aT[1].value=aT[0].value.replace(re,''); }
4.转义字符
.:任意字符
.:真正的点
:独立的部分(起始,结束,空格)
B:非独立的部分
var str='abc'; //中间第二位可以为任意字符 var re=/a.c/; alert(re.test(str));//true var str1='onetwo'; //var re=/one/;//true //var re=/one/;//true var re1=/one/;//false alert(re.test(str));