美文网首页
关于正则

关于正则

作者: mao77_ | 来源:发表于2019-02-09 18:23 被阅读0次

关于正则

1. 正则表达式入门

  • 创建一个正则表达式对象
    • 参数1: 模式
    • 参数2: 修饰符 g:global i:ignore

模式中如果有变量必须使用构造函数

    var s = "box";
    var re = new RegExp(s, "gi");
    console.log(re);

使用字面创建正则表达式

    var re1 = /box/gi;
    console.log(re1);

2. 正则表达式的使用方式

    var re = /box/gi;
    re.lastIndex = 100;
    console.log(re.lastIndex);
    console.log(re.test("abOxBoxallbox")); //
    console.log(re.lastIndex);  //
    console.log(re.test("box")); //
    
    /*console.log(re.lastIndex);
    var s = "aaaBoXaaaBox";
    console.log(re.test(s));
    console.log(re.lastIndex);
    console.log(re.test(s));
    console.log(re.lastIndex);
    console.log(re.test(s));
    console.log(re.lastIndex);
    console.log(re.test(s));*/

3. 正则表达式方法exec

    var re = /girl/gi;
    var s = "abgiRllflGirlljlGIRLaaaaljlGirlldfjlGIRl";
    var result;
    <!--while((result = re.exec(s)) != null)-->
    while(result = re.exec(s)){
        console.log(result[0], result.index);
        // giRl 2
        // Girl 9
        // GIRL 16
        // Girl 27
        // GIRl 36
    }

4. 正则表达式规则

  • `` : 匹配任意的字符
  • [123] : 要么1要么2要么3
  • [^a] : 不是字母a, 当把^放在[]中的时候表示非
  • \d : 匹配的所有的数字 ===[0-9] d:digital
  • \D :匹配所有的非数字 ===[^0-9]
  • \w :匹配所有的单词字符,数字字母和下划线 ===[0-9a-zA-Z_] w:word
  • ^a :以a开头(如果想限制字符串的长度,必须有开头和结尾)
  • a$ :以a结尾
  • () :进行分组
  • \| :或
  • 数量词: 默认贪婪模式,尽可能多

  • ? : 表示0个或1个
  • *: 表示0个或多个 >=0
  • +: 表示1个或多个 >=1
  • {m}: 正好m个
  • {m,}: m个或多个 >=m
  • {m,n} : 至少m个,最多n个
    用户名: 只能用数字字母来表示, 开头不能是数字, 长度必须是 5-10个字符
    var s = "ac1e11"
    var re = /^[a-z][\da-z][\da-z][\da-z][\da-z]$/gi;
    // 验证一个电话号码  ^1$
    var num = "18603071634";
    var re = /^1[3578]\d{9}$/gi;
    console.log(re.test(num));
    //验证邮箱
    var email = "123@sohu.com";
    var re = /^\w{3,15}@\w+\.(com|cn|org|edu|com\.cn)$/gi;
    console.log(re.test(email));
    //确定值是否为空
    var s = "";
    var re = /^$/gi;
    console.log(re.test(" "));

5. 正则表达式的应用

一个正则表达式对象

  • lastIndex
  • test
  • exec

正则表达式的规则


6. 字符串中的支持正则的四个方法

search

相当于正则的test

  • 接收一个正则表达式
  • 返回值是匹配的子字符串的下标
  • 不管加不加'g',都是从头开始去查找匹配
  • 返回值第一次满足的索引,g是无效的
    var s = "11rru977ee";
    var re = /\d{3}/i
    console.log(s.search(re));   //5

match

相当于正则的exec

  • 当传入一个正则的时候,会把匹配的所有的子字符串全部一次性的找到
  • 所有匹配的子字符串组成的数组
    var s = "w1221w";
    var re = /\D+\d(\d{2})\d\D+/gi;
    console.log(s.match(re));   //["w1221w"]
    
    // console.log(s.match(/\d+/gi));   //["1221"]
    // console.log(s.match(/[a-z]+/gi));    //["w", "w"]
  • **例如网络爬虫/图片
    <script src="lzl.js"></script>
    </head>
    <body>
    <script>
    var re = /https?:\/\/[^:]+\.(jpg|jpeg|png|gif)/gi;
    var urls = s.match(re);
    for(var url of urls){
        var img = document.createElement("img");
        img.src = url;
        document.body.appendChild(img);
    }
    </script>

replace

  • 替换
    var s = "agc7739aaabu9u9";
    console.log(s.replace(/[a-z]/gi, ""));   //773999
    console.log(s.replace(/\d{2}/gi, ""));    // agcaaabu9u9
  • 正则表达式中: 用\1用来捕获组,替换的字符串用$1
    var s = "我我我我我我我哦喔喔今天天天要请你们吃吃吃吃饭";
    // 正则表达式中: 用 \1 用来捕获组  替换的字符串:用 $1
    console.log(s.replace(/(.)\1+/gi, "$1"));  //我哦喔今天要请你们吃饭
  • trim方法的正则表达式解法:
    function myTrim(s){
        return s.replace(/^\s+|\s+$/gi, "")
    }

    console.log("z" + myTrim(" \t  ab ab  \n") + "z");    //zab abz
    var re = /.[A-Z]/g;
    console.log("HelloMyWorld".replace(re, function(e){
        // console.log(e);
        // var arr = e.toLowerCase().split("");
        // arr.splice(1, 0, " ");
        // return arr.join("");

        return e[0] + " " + e[1].toLowerCase();  //Hello my world
    }));

split

  • 切割, 有些情况可以和match达到同样的效果
  • 参数2: 切出来大的数组的最大长度
    var s = "aa11aa";
    console.log(s.match(/[a-z]+/gi));    //["aa", "aa"]
    console.log(s.split(/\d+/gi, 3));    //["aa", "aa"]
    // 参数2:切出来的数组的最大长度

相关文章

  • 2018-09-11 day17-正则表达式

    正则表达式 python关于正则的支持 提供内置模块re fullmatch(正则表达式, 字符串) - 判断字符...

  • 关于正则

    概念: 正则表达式(Regular Expression)是计算机科学的一个概念。正则表达式使用单个字符串来描述、...

  • 关于正则

    --------------------------正则的作用--------------------------...

  • 关于正则

    正则表 1.NSPredicate(谓词) 谓词一般用于校验特定字符串的格式是否正确,使用方法很灵活。 -(BOO...

  • 关于正则

    关于正则 1. 正则表达式入门 创建一个正则表达式对象参数1: 模式参数2: 修饰符 g:global i:i...

  • 关于正则

    匹配 多个类名中的指定类名如 'target row1 color3 act' 中的color3但是后面的数字不确...

  • 关于正则

    head显示文件的前部 -n<行数>显示的行数 head-n5log2014.log#显示文件前5行 -c<字节>...

  • 正则表达式提取器-Jmeter

    1.关于正则表达的小问题

  • 正则表达式

    正则表达式介绍: //正则表达式不是js中的独有功能//其他的一些语言中也有正则的实现方式,当我们在查看关于正则的...

  • 正则表达式入门

    正则表达式 关于正则表达式相信很多学计算机的人都听说过 尤其是做编程行业的人 那什么是正则表达式 正则表达式,又称...

网友评论

      本文标题:关于正则

      本文链接:https://www.haomeiwen.com/subject/hsrzsqtx.html