美文网首页
正则探秘

正则探秘

作者: 贪恋冬天的幸福 | 来源:发表于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

相关文章

  • 正则探秘

    在前端世界里,正则是一种秘而不宣的利器,不可缺少,不可不精。 今天我们来看一下,正则实现更精确的匹配。词语:“花桥...

  • 旅行-在路上

    说到旅行,现代人在熟悉不过的词语啦,为了探秘他乡的美,而行走在路上,走进古村落,探秘那里的历史文化;走进大山,探秘...

  • 探秘 Java 热部署三(Java agent agentmai

    前言 让我们继续探秘 Java 热部署。在前文 探秘 Java 热部署二(Java agent premain)中...

  • 2018-06-29

    东南亚探秘 ...

  • 探秘区块链第1期——orchid/兰花协议

    作者 币乎:Block探秘微信公众号:Blockchain探秘 项目名称:orchid/兰花协议 项目概念:基于区...

  • 旷野探秘

    闲来旷野探秘踪, 探秘更在几万重。 野外清新深思忖, 万年是否探吾踪?

  • 重点图书推荐

    1.《恐龙王国大探秘》 ISBN:9787535393272 月销售:25本 2.《海底世界大探秘》 ISBN:9...

  • 探秘龙宫河

    探秘龙宫河 再次来到龙宫河探秘,是和我的学生在一起。 一个冬日的中午,我们集合在一起,徒步两公里去龙宫河探秘, 这...

  • java正则使用

    正则切割 正则捕获 正则完全匹配

  • regexp 正则包

    正则对象 正则使用都是通过创建对应的正则对象,调用对象方法所实现。 新建正则对象 正则对象属性方法 正则方法 一般...

网友评论

      本文标题:正则探秘

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