01. 匹配开头:脱字符(^)
001. 是否符合开头(匹配)
正则:/^he/gm
正例:helloworld
反例:worldhello
说明:如下图所示,正例字符串符合已he开头,成功命中。
002. 开头插入字符(替换)
正则:/^/gm
待替换字符:helloworld
替换结果:
网络异常,图片无法展示
|
02. 匹配结尾:美元符($)
001. 是否符合结尾(匹配)
正则:/ld$/gm
正例:helloworld
反例:worldhello
说明:如下图所示,正例字符串符合已ld结尾,成功命中。
002. 结尾插入字符(替换)
同开头插入字符
单词\非单词边界:\b、\B
\b
单词边界指的就是单词字符\w和非单词字符\W之间的位置,也包含单词字符到有脱字符的开始位置和单子字符到有美元符的结束位置,\B
反之,具体看下图进行理解:
03. 命中p的前面位置:(?=p)
正则:/(?=o)/gm
说明:如下图所示,成功找到字符串中每个o
前面的位置。
04. 命中除了p前面的其他位置:(?!p)
正则:/(?!e)/gm
说明:如下图所示,成功找到字符串中除了e
前面的其他位置。
如下图整理了正则中的位置的图示,因语言兼容版本的问题,更多了可以自行补充一下:
05. 案例分析:
001. 千分位显示数字
- 数字字符表示:
\d
- 千分位量词:
{3}
- 位置替换字符:
(?=p)
- 从末尾往首进行命中
第一版:
呀?齐了怪了,只匹配到了一个位置?那我们想匹配多次怎么办?使用+
呗,但我们要用()
进行一下分组;
第二版:
现在可以看到匹配的位置多余命中了首位,那怎么去除呢?试试这个(?!^)
;
第三版:
最终正则的图示:
稍加扩展:当我们的字符串的内容稍加改变后,我们上面的正则将变得不那么顺手,请看下图:
那这个问题又该怎么办呢?开始的控制开始和结束的位置变的失效了,我们分析一下,字符串中每个1的前面和8的后面都属于单词的边界,那我用使用\B来匹配非单词的边界即可,每组结束的位置又是单词边界我们用\b表示,请看如下图:
欢迎关注我的公众号“前端小鑫同学”,原创技术文章第一时间推送。
位置匹配我们就先学到这,赶紧抄起以前代码中的正则用下面的工具试试看吧,XDM🤭。以上内容学习自老姚的正则表达式迷你书v1.1版,因部分内容还没能理解,还请阅读原著多多学习。