正则表达式
一.正则表达式常用方法
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=/\d\d/g; //[12,54,33,87] // var re=/\d\d\d/g; //[123,879] // var re=/\d\d\d\d/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:独立的部分(起始,结束,空格)
\B:非独立的部分
var str='abc'; //中间第二位可以为任意字符 var re=/a.c/; alert(re.test(str));//true var str1='onetwo'; //var re=/one/;//true //var re=/\bone/;//true var re1=/one\b/;//false alert(re.test(str));

浙公网安备 33010602011771号