JavaScript正则表达式匹配问题

我想实现一个功能:用正则表达式的方法去除字符串中最后一个指定的字符

我的方法是这样的:例如从字符串str = '774567888'中删去最后一个字符‘7’

let str = '774567888'
let reg = /7(?=[^7]*)$/
console.log(str.match(reg), reg)

我的想法是用正则表达式匹配出‘7’,用先行断言筛选出后面没跟着相同字符的那一个,就是最后需要去除的‘7’

但是结果跑出来不如人意,而我在偶然中发现:

let reg = /7(?=[^7]*)$/  //不成功
let reg = /7(?=[^7]*$)/  //成功

以上正则表达式中第一个(就是我原本那个)不行,而第二个却可以,我很疑惑为什么把$挪入括号内就可以了呢?

求解,谢谢!

阅读 1.9k
1 个回答

断言是条件不参与匹配 所以第一个的意思是匹配以7结尾。

推荐问题