前端正则匹配

想匹配到 已千米 为结尾的所有非数字字符
例如: let str = '123ja23x千米x123x千米'

 最后想得到是  12323123千米

 我的写法是
 let reg = /\D+[^(千米)$]/g
 str.replace(reg, '')
 结果 : 123323x千米

 但是不对  想请教一下 怎么写

阅读 1.8k
1 个回答

相当于把非数字字符清除,但是被清除的字符后面不能是,也不能是结束符$

'123ja23x千米x123x千米'.replace(/\D(?!米?$)/g, ''); // 12323123千米

不过可读性稍稍差了些,还不如'123ja23x千米x123x千米'.replace(/\D/g,'') + '千米'更直接些。

推荐问题