正则表达式

一.正则表达式常用方法

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));

  

 

 

  

  

posted @ 2018-01-23 17:27  carol72  阅读(176)  评论(0编辑  收藏  举报