美文网首页
走近正则-温故知新

走近正则-温故知新

作者: 追风的云月 | 来源:发表于2018-11-29 09:34 被阅读0次

    再一次开始正则表达式的学习,可能更应该说是复习。
    这一次的学习从MDN文档开始,首先记住元字符,它们表示特定的含义

    对于匹配到单词的元字符

    \d:匹配数字,\D则匹配非数字;
    \w:匹配单字符,\W匹配一个非单字符,单字符——[A-Za-z0-9_];
    \s: 匹配一个空白字符,\S匹配一个非空白字符;
    .:匹配除换行符之外的任何单个字符,那么搭配上换行符\n,也就代表了所有字符

    关于匹配的起始元字符:

    ^:匹配开头,$:匹配结束

    对于数量的匹配元字符:

    顾名思义,就是指这个字符你想匹配它出现几次的场景
    *:意思是这个表达式出现0次或多次
    +:匹配表达式出现一次或者多次的场景
    ?:匹配表达式出现0次或者1次
    {n}:匹配表达式出现n次

    关于匹配模式 分组和引用

    (x):捕获符号,捕获并且记住
    (?:x): 捕获但是不记住


    一图解释所有流
    关于分组
    关于查找模式

    x(?=y):匹配后面为y的x
    x(!=y):匹配后面不为y的x
    (?<=y)x:匹配前面为y的x
    (?<!y)x:匹配前面不为y的x


    image.png

    如何将用户输入转义为正则表达式中的一个字面字符串:

    function escapeRegExp(string){
        return string.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$&"); 
        //$&表示整个被匹配的字符串
    }
    

    关于工作中小小的应用,在一个字符串中需要查询另一个字符串的存在,因为需要在一个fullpath中找到另一个path的存在,但是因为path的顺序不一定能对上,所以把path先剪切成一个数组,然后组成一个正则表达式,只要能在fullpath当中匹配到path里面的元素就成功匹配

    const fullPath = '1001,1002,1005'
    const rowPath = '1005,1002'
    const rowPathArr = rowPath.split(',');
    let regexp = '.*';
    rowPathArr.map(rPath => {
        regexp = regexp +  rPath + '.*'
    })
    let regex = new RegExp(regexp);
    if (regex.test(fullpath)) {
        return true
    }
    

    正则表达式
    RegExp正则对象
    正则在线校验网站

    相关文章

      网友评论

          本文标题:走近正则-温故知新

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