前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >基础 | 正则表达式(JS)-入门篇2

基础 | 正则表达式(JS)-入门篇2

作者头像
用户1097444
发布2022-06-29 15:25:31
2550
发布2022-06-29 15:25:31
举报
文章被收录于专栏:腾讯IMWeb前端团队

继续讲下一般人(这里的一般人指的是一般不写正则的人)不经常用的功能:

1、忽略优先量词

包括:*?、+?、??、{num, num}? 。这几类和后面没有加?的量词的区别就是:前者会匹配尽可能少的内容,只要满足下限,匹配就能成功;而后者反之(简单点说就是非吃货和吃货的区别)。

2、非捕获型括号(?:…) 这个是什么意思呢?意思是只分组不捕获。 好处: 1>避免了不必要的捕获操作,提高了匹配效率。 2>根据情况选择合适的括号能够叫逻辑更清晰,读者能清楚理解需要捕获的内容,而不用挨个数括号算作者到底想捕谁。 坏处:写法看着不够美观,增加了阅读难度,这个难度因人而异。

3、反向引用 直接上代码(匹配html标签),顺便复习下刚才讲的非捕获。

4、环视(lookaround) 什么叫环视呢?这个解释起来比较麻烦(TC:麻烦到只可意会不能言表,靠,尼玛坑爹呢!好了,不开玩笑了),我们举个例子讲。 例如:1234567890,我想从右到左,每3个加一个逗号,变为1,234,567,890。正则表达式怎么写? 逗号应该加在“左边有数字,右边数字的个数正好是3的倍数的位置”,但是一般正则表达式都是从左向右工作的,这时就要用到“环视”了。 环视结构不匹配任何字符,只匹配文本中的特定位置,下面是四种类型的环视:

类型

正则写法

匹配成功的条件

js支持程度

肯定逆序环视

(?<=…)

子表达式能够匹配左侧文本

不支持

否定逆序环视

(?<!…)

子表达式不能匹配左侧文本

不支持

肯定顺序环视

(?=…)

子表达式能够匹配右侧文本

支持

否定顺序环视

(?!…)

子表达式不能匹配右侧文本

支持

有了环视,刚才我们的例子,就很好处理了,答案如下:

 替换逗号步骤我没写,只是把需要在后面加逗号的数字都匹配出来了。

5、元字符和字符组的一些小破事 1、元字符的规定在字符组内外是有差别。 例如[*]的*就不再是元字符了;而[-]的-还是元字符;^在[]就不是匹配开头了,而是取反的意思(这里就不一一列出了,主要是提个醒,大家用到时注意点。为什么不一一列出,你这个懒鬼!回答正确,加10分)。 2、在多数系统中,使用范围表示法而不是列出范围内的所有字符并不会影响执行速度(例如:[0-9]与[0123456789]是一样的。)相反,如果某些实现方法没有优化好的话,还会是范围表示法会快一些。

扫码下方二维码,

随时关注更多前端干货文章!

微信:IMWebTech

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯IMWeb前端团队 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档