美文网首页web前端
正向前瞻到底是干啥的?

正向前瞻到底是干啥的?

作者: 姜治宇 | 来源:发表于2020-02-09 13:28 被阅读0次

正则表达式有个前瞻的概念,分为:
1、正向前瞻(?=)
=就是肯定的意思。
英文:look ahead positive
2、负向前瞻(?!)
!就是非,否定的意思。
英文:look ahead negative
从字面上看并不好理解,其实这是翻译的问题,我们从英文字面上更好理解。
look ahead就是昂首挺胸向前走路,这个前,就是从左到右
positive就是肯定,表示你往前走肯定能看到的东西;相反,negative就是否定,就是你往前走看不到的东西。
举个例子,比如有这么一个字符串:

var str = 'hello123jerry'

我们从左到右看(昂首往前走路),hello能看到123吗?
当然肯定看到123了啊,所以我们顺利匹配到了,这就是正向前瞻:

var str= 'hello123jerry'
var reg1 = /hello(?=123)/g
console.log(str.match(reg1))//[ 'hello' ]

我们继续。
hello123继续往前走,不能看到tom吧?(我们怕遇到tom)
放心,前方是jerry,这就是负向前瞻:

var str = 'hello123jerry'
var reg2 = /hello123(?!tom)/g
console.log(str.match(reg2))//[ 'hello123' ]

综合起来,也就是hello要遇到123,但不能遇到tom:

var str = 'hello123jerry'
var reg3 = /hello(?=123)(?!tom)/g
console.log(str.match(reg3))

我们注意到,前瞻并不捕获,只是告诉你:前面有啥捏?
弄懂了基本语义,我们看个比较常见的例子。

金额加千分位间隔:

这个需求大家不陌生吧?实现的方法很多,不过使用正向前瞻是最省事的:

var num = 13123903243
//第一步:将num转为string类型
var str3 = num.toString()//先转换到字符串
//正向前瞻:(\d)往前走,前面是3的倍数,
//\d{3}表示3位数字,
///d{3}+表示3的倍数
var handleNum = str3.replace(/(\d)(?=(\d{3})+$)/g,function(val){
    return val+','
})
console.log(handleNum)
运行过程: run.png

其实,正则表达式除了前瞻,还有后顾。但因为js并不支持,我们这里就省略了,有兴趣的同学可以自行百度一下。

相关文章

  • 正向前瞻到底是干啥的?

    正则表达式有个前瞻的概念,分为:1、正向前瞻(?=)=就是肯定的意思。英文:look ahead positive...

  • 正则捕获组

    分组类型 有四种分组类型 捕获型() 非捕获型(?:) 正向前瞻型(?=) 反向前瞻型(?!) 捕获型 分组下面的...

  • 到底是来干啥的?

    二叔路过楼下的饭店,饭店老板神秘滴拉过二叔,哎:我发现个事不知道该不该说?二叔看啦看老板,你个瘪犊子,跟我还扯这套...

  • 你到底是干啥的?

    大学里的憧憬神往,毕业后的跃跃欲试,入职后的踌躇满志,然后就一入咨询,深似海。 到今年为止,进入咨询行业九年了。一...

  • GPUImageFramebufferCache

    总述 它继承自NSObject说明它是唯一一个没有继承任何GPUImage特性的类。那它到底是干啥的?它能干啥呢?...

  • 网优到底是干啥的?

    如果你走在马路上 或者坐在地铁上 看到这么一个奇怪的男人—— 戴着黑框眼镜 穿着深色的外套或格子衬衫 抱着一台破旧...

  • 大成叔叔到底是干啥的?

    大成看病看得挺准! 大成针灸针得挺好! 大成,你是啥仙儿? 大成,你会算命吧! 大成,你太能讲了! 大成,你还会唱...

  • 前瞻

    前瞻是刚需 未来即可成 眼光触前瞻 思想达前瞻 筹谋预前瞻 战略自前瞻 国家之未来 前赡之谋划 未来之可成

  • 6个步骤改变现状之后篇

    当我们付出行动之后,就一定会有结果,不过未必都是正向结果,如果不是正向的,就需要检查修正,看看到底是哪里出现问题了...

  • 邻居小夫妻到底是干啥的?

    2019年10月18日 星期五 晴 阴雨了好几日的天,今日一早终于肆意的晴朗起来,我没能赶上和石头一起去公园遛...

网友评论

    本文标题:正向前瞻到底是干啥的?

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