正则表达式

正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。

一、定义

有两种方式定义正则表达式;
1、用两个斜杠把正则表示式的内容包起来然后赋值给变量:
var re=/a/;//表示包含a的字符
2、new 一个RegExp对象,把正则表达式用引号包起来作为参数传给RegExp对象;
var re=new RegExp('a');

二、匹配

正则表达式通过test方法匹配字符串是否符合规则,如果匹配成功返回真,如果失败返回假。写法:正则.test(字符串)。
正则表达式的转义字符:
\n 换行
\s :空格
\S : 非空格
\d: 数字
\D: 非数字
\w: 字符(字母,数字,下划线_)
\W: 非字符
\b: 独立的部分 (起始,结束,空格)
\B: 非独立的部分
^:如果写在[]代表排除的意思,写在外面表示匹配输入字符串的开始位置。
$:正则最后的位置,代表结束的位置。
大写字母表示小写字母相反的意思。
特殊符号的含义:数量{} 字符类[] 子项()。

三、方法

1、search: 正则匹配字符串,如果匹配成功,就返回匹配的位置,如果失败就返回-1;
search是字符串的方法,用法:字符串.search(正则)
注意:正则默认是区分大小写的,如果不想区分大小写的好话,在正则的最后加标识标识符 i即可,例:

var str='abcdef'
var re=/B/i
//var re=new RegExp('B','i')
alert(str.search(re))

2、match: 正则去匹配字符串,如果匹配成功,就返回成功的数组,如果不成功就返回null
match的写法 :字符串.march(正则);
正则默认:正则匹配成功就会结束,不会继续匹配,如果想全部去查找 就要加标识 g(全局匹配);
3、replace:正则去匹配字符串 匹配成功的会替换成新的字符串。
replace写法:字符串.replace(re,新的字符串)

var str='aaa'
var re=/a+/
str=str.replace(re,'b')
alert(str)

弹出b。
replace 第二个参数 可以是字符串,也可以是函数。例:

var aT=document.getElementsByTagName('textarea');
            var bnt=document.getElementById('input1');
            var re=/武警|机关体制|调整/g
            bnt.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;
                })
            }

4、匹配子项:用小括号()将正则表达式拆分成若干项,每个括号里的内容都叫匹配子项,正则的整体叫做母亲;然后把第一个括号里面的正则,叫做第一个子项(母亲的第一个孩子);第二个括号就是第二个子项;

var str='2017-10-7'
var re=/(\d+)(-)/g
//          var re=/-/
str=str.replace(re,function($0,$1,$2){
     函数的第一个参数:就是匹配成功的整体字符(母亲)
    console.info($0);
     return $1+'.'
    //return $0.substring(0,$0.length-1)+'.'

})
alert(str)  // 2017.10.7

5、过滤标签实例:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        替换前<br />
        <textarea></textarea><br />
        替换后<br />
        <textarea></textarea><br />
        <input type="button"  value="确定" id="input1"/>
    </body>
    <script>
        var aT=document.getElementsByTagName('textarea');
        var bnt=document.getElementById('input1');
//      var re=/<[\w\W]+>/g
        var re=/<[^>]+>/g
        bnt.onclick=function(){
            aT[1].value=aT[0].value.replace(re,"")
        }
    </script>
</html>

四、量词

量词:匹配不确定的位数。
特殊符号的含义:数量{} 字符类[] 子项()。
+:符合+前面的正则规则的字符至少出现一次。

var str='hda123dadfap54fad33ushdbf879';
var re=/\d+/g;
console.log(str.match(re));

上面中“\d”一次只会匹配出一个数字,如果把var re=/\d+/g;改成var re=/\d/g;那么结果就会输出所有数字,没个数字都是数组的一个变量。
“\d+”表示数字字符串,var re=/\d+/g;,上面代码的输出结果是把连续的数字做为数组变量输出来,每个数字字符串为一个数组成员。

一些表示数量的表示形式:
+和{1,}是一样的,表示至少出现1次;
? {0,1} 出现0次或者1次;
* {0,} 至少出现0次
{4,7} 最少出现4次,最多出现7次
{4} 正好出现4次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值