正则表达式

来源:互联网 发布:按键精灵读取数据库 编辑:程序博客网 时间:2024/06/05 17:35

正则表达式 它是给计算机读取的一个规则

引入下

要把str中的数字 提取出来放进一个数组里边  [123,0,223].
<!DOCTYPE html><html lang="en">    <head>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">        <meta name="Author" content="">        <meta name="Keywords" content="">        <meta name="Description" content="">        <title>Document</title>        <style type="text/css">            * {margin: 0; padding: 0;}            a {text-decoration: none;}            ul,li {list-style: none;}            body {font-family: "Microsoft yahei";}        </style>    </head><body><script type="text/javascript">/*    只获得数字    // if(!isNaN(str.charAt(i))){    //     console.log(str.charAt(i));    // }    // if(str.charAt(i) == parseInt(str.charAt(i))){    //     console.log(str.charAt(i));    // }    // if(str.charAt(i)>="0" && str.charAt(i)<="9"){    //     console.log(str.charAt(i));    // } */    // 要把str中的数字 提取出来放进一个数组里边  [123,0,223]    // 常规做法    var str = "123num0br223d1312e";    var arr = [];    // var a = Number("1");    var res = ""    for(var i=0;i<str.length;i++){    // 0 -- 48   9 -- 57        if(str.charCodeAt(i)>=48 && str.charCodeAt(i)<=57){            res += str.charAt(i);            // console.log(res);        }else{        //null "" undefined NaN false 0        //为了 push非空res            if(res){                arr.push(res);                res = "";            };        };    }    if(res)arr.push(res);    console.log(arr);    //  正则    var pattern = /\d+/g;    console.log(str.match(pattern));</script></body></html>

正则表达式方法

    写法        var str = "qwe123";        var pattern = /123/;(推荐使用)        var pattern = new RegExp(表达式,标识符);    正则方法        test()            匹配到返回true            匹配不到返回false        exec()            匹配到返回一个查找字符相关的数组            匹配不到返回null        pattern.test(str);    字符串方法        match()            匹配到返回数组(匹配的项  看是否有标识符g)        search()            匹配总是返回匹配到的第一个符合条件的下标            匹配不到 -1        replace()            替换匹配的子表达式        str.match(pattern);

<!DOCTYPE html><html lang="en">    <head>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">        <meta name="Author" content="">        <meta name="Keywords" content="">        <meta name="Description" content="">        <title>Document</title>        <style type="text/css">            * {margin: 0; padding: 0;}            a {text-decoration: none;}            ul,li {list-style: none;}            body {font-family: "Microsoft yahei";}        </style>    </head><body><script type="text/javascript">    /*     */     // test()     // var str = "string213a2"     // var pattern = /a/;     // alert(pattern.test(str));//true     // exec()     // var str1 = "box123";     // var pattern = /box/;     // console.log(pattern.exec(str1));     // lastIndex     /*         有匹配子项(a)  返回数组的差别         exec开启了全局 没有匹配完 再次去匹配时 起始索引是上次一的结束索引lastIndex      */     // var str = "1232a22a1a1";     // var pattern = /\d+(a)/g;  //g 全局  标识符     // console.log(pattern.exec(str));     // console.log(pattern.lastIndex);//5     // console.log(pattern.exec(str));     // console.log(pattern.lastIndex);//8     // console.log(pattern.exec(str));     // console.log(pattern.lastIndex);//10     // console.log(pattern.exec(str));     // 返回匹配字符     // var str = "where box a box";     // var pattern = /box/g;     // var result;     // while((result = pattern.exec(str)) != null){     //    alert(typeof result);//object数组     // };     //  match() 返回数组     //     // var str = "123s12d34r3";     // var pattern = /\d+/  //匹配数字一次     // var pattern1= /\d+/g   //匹配全部数字. g全局     // console.log(str.match(pattern));     // console.log(str.match(pattern1));     // search() 返回查找字符的下标  没有 返回-1     // var str = "box1230";     // var pattern = /12/;     // var pattern2 = /a/;     // console.log(str.search(pattern));//3     // console.log(str.search(pattern2));//-1     //replace()     var str = "box1,box2,box3";     var pattern = /box/g;  //被替换的字符     console.log(str);     console.log(str.replace(pattern,function(){        return "RegExp"; //替换的字符     }));</script></body></html>

标识符 元字符 锚点 转义字符

        标识符            g   global全局匹配 匹配全部            i   ignore忽略大小写        锚点            ^   开头  [^]代表非            $   结尾        转义字符            \            \r  回车            \n  换行            \t  tab制表符        元字符            \d  数字               [0-9]            \D  非数字             [^\d]            \w  字母数字下划线     [a-zA-Z0-9_]            \W  非字母数字下划线            \s  空格 tab            \S  非 空格 tab

<!DOCTYPE html><html lang="en">    <head>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">        <meta name="Author" content="">        <meta name="Keywords" content="">        <meta name="Description" content="">        <title>Document</title>        <style type="text/css">            * {margin: 0; padding: 0;}            a {text-decoration: none;}            ul,li {list-style: none;}            body {font-family: "Microsoft yahei";}        </style>    </head><body><script type="text/javascript">         // 转义字符 \        // var str = "12\\3";//12\3        // alert(str);        //  i ==>ignore忽略大小写        // var str = "ABC";        // var pattern = /abc/i;        // alert(pattern.test(str));        //  \d  数字        // var str = 'box213as213';        // var pattern = /\d+/g;        // var pattern = /[0-9]+/g;        // var pattern = /\D+/g;        // var pattern = /[^0-9]+/g;        // console.log(str.match(pattern));        //  \w [a-zA-Z0-9_]字母数字下划线        // var str = "qwe123_";        // var pattern = /\w/;        // var pattern = /[a-zA-Z0-9_]/;        // alert(pattern.test(str));        // isNaN        // 判断是不是数字        // var str = "213123";        // alert(isNaN(str));        // var pattern = /\D/;        // if(!pattern.test(str)){        //     alert("纯数字");        // }else{        //     alert("非纯数字");        // };        // ^   开头  [^]代表非    $   结尾        var str = "box1213box1";        var pattern = /^\w+\d$/;  //以字母数字下划线开头  ,以数字结尾        alert(pattern.test(str));</script></body></html>

量词

量词        *        区间[0++]         {0,}        +        区间[1++]         {1,}        ?        区间[0,1]        {0,1}        .        任意个字符        .*       大于0任意字符                 [m,n]             {m,n}
<!DOCTYPE html><html lang="en">    <head>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">        <meta name="Author" content="">        <meta name="Keywords" content="">        <meta name="Description" content="">        <title>Document</title>        <style type="text/css">            * {margin: 0; padding: 0;}            a {text-decoration: none;}            ul,li {list-style: none;}            body {font-family: "Microsoft yahei";}        </style>    </head><body><script type="text/javascript">     // var str = "go0gle";     // var pattern = /go*gle/; //==> /g{0,}gle/;     // var pattern = /^\wo+gle/; //==> /g{1,}gle/;     // var pattern = /go?gle/;  //{0,1}     // alert(pattern.test(str));     // var str = "goooogle";     // var pattern = /go*gle/g;  //o可以任意个     // var pattern = /go{4}gle/g;  //o只可以4个     // var pattern = /go{4,8}gle/g;  //o只可以4到8个     // alert(pattern.test(str));     // var str = "gooo@21321agle";     // var pattern = /go.*gle/g;  //o后面接任意字符     // alert(pattern.test(str));     //     /*         贪婪模式    量词 * + {} 量词优先 尽可能多的去匹配         惰性模式    忽略量词   尽可能少的去匹配      */    // var str = "wq2ew2qas_@@12321";    // // var pattern = /\w+/;    // var pattern = /\w/g;    // alert(str.replace(pattern,"prpr"));    // 惰性模式  忽略量词    // var str = "wq2ew2qas_@@12321";    // var pattern = /\w+?/; //值匹配第一个字符    // alert(str.replace(pattern,"prpr"));    // 惰性模式开启全局的话    // var str = "wq2ew2qas_@@12321";    // var pattern = /\w+?/g; //值匹配每个字符    // alert(str.replace(pattern,"prpr"));    //前提条件 都是要匹配成功    // var str = "box12box345";    // var pattern = /box\d{3}/;    // alert(pattern.test(str));    // var str = "box12boxbox34boxaa";    // var pattern = /box\d+?boxaa/;    // alert(pattern.test(str));</script></body></html>

子集

    /*        子集()            match 有子集的时候第二项返回的第一个子集子集内容 以此类推 第三项返回第二个子集        |            或者     */
<!DOCTYPE html><html lang="en">    <head>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">        <meta name="Author" content="">        <meta name="Keywords" content="">        <meta name="Description" content="">        <title>Document</title>        <style type="text/css">            * {margin: 0; padding: 0;}            a {text-decoration: none;}            ul,li {list-style: none;}            body {font-family: "Microsoft yahei";}        </style>    </head><body><script type="text/javascript">    // var str = "box13box33bo";    // var pattern = /(box\d+)/;//第二项返回的第一个子集    // var pattern = /(box)\d+/g;//有全局 不返回    // console.log(str.match(pattern));    // var str = "abcd";    // var pattern = /(a(b(c(d))))/; //匹配abcd ===>返回子集abcd bcd cd d    // console.log(str.match(pattern));//    // console.log(str.match(pattern).length);//5    // 匹配压缩包  rar | zip | 7z    var str = '2017-4-7.zip';  //. 要转义  \.    // var pattern = /^[\w-\s-]+\.zip|rar|7z$/;    var pattern = /^[a-zA-Z0-9_-\s]+\.zip|rar|7z$/;    alert(pattern.test(str));</script></body></html>

* replace*

    /*        replace用途        有子集$0 $1 $2 ...        $0匹配项 $1第一个子集 ...     */
<!DOCTYPE html><html lang="en">    <head>        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">        <meta name="Author" content="">        <meta name="Keywords" content="">        <meta name="Description" content="">        <title>Document</title>        <style type="text/css">            * {margin: 0; padding: 0;}            a {text-decoration: none;}            ul,li {list-style: none;}            body {font-family: "Microsoft yahei";}        </style>    </head><body><script type="text/javascript">    /*        replace用途        有子集$0 $1 $2 ...        $0匹配项 $1第一个子集 ...     */    // var str = "google baidu";    // var pattern = /(.*)\s(.*)/;    // alert(str.replace(pattern,'$2 $1'));一种写法    // alert(str.replace(pattern,function($0,$1,$2){    //     console.log($0);    //     return $2+" "+$1;    // }));    // 删除    // var str = "abc2017asda2";    // var pattern = /[\D]+/g;//非数字    // var pattern = /[^\d]+/g;//非数字    // console.log(str.replace(pattern,""));    // 屏蔽辣鸡话    //    var str = "你妈mmp,Nmb,sb";    var pattern = /妈|m.*m.*p|n.*m[\s]*b|s.*b/gi;    alert(str.replace(pattern,function($0){        console.log($0);        return "**";    }));</script></body></html>
0 0
原创粉丝点击