美文网首页
正则探秘

正则探秘

作者: 贪恋冬天的幸福 | 来源:发表于2022-02-09 14:02 被阅读0次

    在前端世界里,正则是一种秘而不宣的利器,不可缺少,不可不精。

    今天我们来看一下,正则实现更精确的匹配。词语:“花桥镇小学”与“花桥小学”,目的:匹配成功。
    如果正则表达式是从用户输入等来源动态地产生,我们就需要使用构造函数来创建正则表达式,而不能使用字面量。
    思考:"花桥镇小学"与"花桥小学"是多包含少的关系,且文字顺序必须一致;
    以较少的词为必须存在的字符,则正则为:

    "花+桥+小+学+"
    

    较多的词存在多余的字符,以\W表示;则正则为:

    "花+\W桥+\W小+\W学+\W"
    

    如果输入词为:“花桥镇第一小学”,则字符的个数应该为0个至多个,正则修改为:

    "花+\W{0,}桥+\W{0,}小+\W{0,}学+\W{0,}"
    //或者
    "花+\W*桥+\W*小+\W*学+\W*" 
    

    输入词:“花桥镇小学”;

    //创建正则字符串
    const restr = "花桥小学".split(").map((v) => `${v}+\\W{0,}`).join("");
    console.log(restr);
    //"花+\W{0,}桥+\W{0,}小+\W{0,}学+\W{0,}"
    
    const re = new RegExp(restr);
    console.log(re.test("花桥镇小学")); //true
    console.log(re.test("桥花小学")); //false
    console.log(re.test("花桥镇第一小学")); //true
    
    

    注意:在字符串字面量中反斜杠是转义字符,如果将字符串传递为RegExp构造函数,为了在模式中添加一个反斜杠,需要在字符串字面量中转义它。/[a-z]\s/inew RegExp("[a-z]\\s", "i") 创建了相同的正则表达式。[MDN]https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions#special-backslash

    相关文章

      网友评论

          本文标题:正则探秘

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