• js 正则


    元字符

    .      匹配除了换行符以外的任意字符
    \w   匹配字母或数字或下划线或汉字等      [a-z0-9A-Z_]  (只考虑英文的话效果一样)
    \d   表示数字的意思,相反,\D表示非数字
     
     
    限定符:
    *        重复零次或多次
    +        重复一次或多次
    ?        重复一次或多次
    {n}    重复n次
    {n,}   重复n次或更多次
    {n,m}   重复n到m次
     

    空白:

    \f匹配换页符,\n匹配换行符,\r匹配回车,\t匹配制表符,\v匹配垂直制表符。
    \s匹配单个空格,等同于[\f\n\r\t\v]
     

    字符集合

    [abc]   表示a或者b或者c中的任意一个字符
    ^[a-zA-Z0-9] 匹配已数字字母开头的字符串
     
    一般 来说,当“^”出现在 “[]”内时就被视做否定运算符;而当“^”位于“[]”之外,或没有“[]”时,则应当被视做定位符
     
    非贪婪  ?
    a.*?b匹配最短的,以a开始,以b结束的字符串
     

    正则表达式的修饰符

    全局匹配,修饰符g   /..../g
    不区分大小写,修饰符i   /...../i
    行首行尾,修饰符m   /....../m
     
    demo:
                var $name = "time";
                var reg = new RegExp("\\b"+$name+"\\b\|\\bkitty\\b","g"); //new RegExp 的方法可以用$name变量值,但对\b这样的边界符要转义 \\b
                var str = "time is one datimey time kitty"
                alert(str.replace(reg,""))
    
    去除特殊字符串
      function clearString(s){
                    var pattern = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()&;|{}【】‘;:”“'。,、?]")
                    var rs = "";
                    for (var i = 0; i < s.length; i++) {
                        rs = rs+s.substr(i, 1).replace(pattern, '');
                    }
                    return rs;
                }
               var h="#sdfsd///////fsdf/"
               var t=clearString(h)
               console.log(t)
    
      function clearString(s){
                    var pattern = /[\s.<>/?~!@#¥……&*()&;|{}【】‘;:”“'。,、?.<>\/\[\]?~!@#¥……&*()&;|{}【】‘;:”“'。,、?]/g
                   var rs= s.replace(pattern,"")
                    return rs;
                }
               var h="dfghdfg df  gh dfghdf    [] \     / > gh"
               var t=clearString(h)
                $("html body").append(t)
               console.log(t)
    

    正则模版匹配

        var pp = {
            init:"替换的字符串",
            reg:/{.+?}/g, /*+?非贪婪模式*/
            pri:function () {
                var k = this.init.match(this.reg).map(function (a) {
                    return a.slice(1, -1);
                });
                console.log(k)
            },
            remove_tag:function (str) {
                str=str.replace(/<\/?[^>]*>/g, "")
                console.log(str);//去掉所有的html标记
            },
            remove_s:function (str) {
                str=str.replace(/(^\s+)|(\s+$)/g, "")
                console.log(str)/*去除前后空格*/
            },
            remove_1:function (str) {
                str = str.replace(/\s/g, "")
                console.log(str)/*去除所有空格*/
            },
            get_tag_html:function(str){
                reg=/<ul>[\s\S]*?<\/ul>/gi
                console.log(str.match(reg))
            }/*获得指定标签的内容*/,
            remove_tag1:function(str){
                str=str.replace(/<ul[\s\S]*?>|<\/ul>/g, "")
                console.log(str)
            }/*去除指定标签*/,
            pri3:function (arr) {
                var str = this.init
                var len = str.match(this.reg).length
                console.log(str.match(this.reg))
                for (var i = 0; i < len; i++) {
                    var t = this.reg.exec(str)
                    console.log(t)
                    var tmp = t.toString().slice(1, -1);
                    if (arr[tmp]) {
                        str = str.replace(t.toString(), arr[tmp])
                    }
    
                }
                console.log(str)
            }/*替换{}中的字符串*/
        }
        pp.init = "开始{$age}中sdfasdf{$name}间从{然后后来}前"
        pp.pri3({"$name":"_name_", "$age":"_age_"})
        pp.remove_tag("<div>asdfasdfasdf<span>a12<33>4456</span></div>")
        pp.get_tag_html("<ul>asdfasdfasdf</ul><ul>21</ul>")
        pp.remove_tag1("<ul class='sd'>232323<ul>asdf</ul></ul><ul>ddd</ul>")
    

     输出

    开始_age_中sdfasdf_name_间从{然后后来}前
    

     replace function

    var str = "他今年22岁,她今年20岁,他的爸爸今年45岁,她的爸爸今年44岁,一共有4人"
    
        function test($1) {
    
            var gyear = (new Date()).getYear() - parseInt($1) + 1;
    
            return $1 + "(" + gyear + "年出生)";
    
        }
    
        var reg = new RegExp("(\\d+)岁", "g");
        var reg2=/(\d+)岁/g    /*所以有时*/
    
        var newstr = str.replace(reg, test);
    
        alert(str);
    
        alert(newstr);
    

      

  • 相关阅读:
    leetcode 567 滑动窗口
    田忌赛马
    去除CSDN无用的打印边框,显示数据
    操作系统博客清单
    OpenKiwi学习笔记
    开源minigui移植
    嵌入式GUI总结
    short int 变量的取值范围
    68 进程等待机制的实现 下
    67 进程等待机制的实现 上
  • 原文地址:https://www.cnblogs.com/breakdown/p/2716221.html
Copyright © 2020-2023  润新知