在JavaScript中,我需要用下划线字符(_)替换所有出现的点字符(。)(如果有的话),除了最后一个。用javascript中的下划线字符替换所有出现的点号字符
该表达式用下划线字符(_)替换所有出现的点字符(。),包括最后一个字符(_),但我试图弄清楚如何改变它以便单独留下最后一个(。)字符。
str.replace(/\./g, '_');
谢谢!!
史蒂夫
在JavaScript中,我需要用下划线字符(_)替换所有出现的点字符(。)(如果有的话),除了最后一个。用javascript中的下划线字符替换所有出现的点号字符
该表达式用下划线字符(_)替换所有出现的点字符(。),包括最后一个字符(_),但我试图弄清楚如何改变它以便单独留下最后一个(。)字符。
str.replace(/\./g, '_');
谢谢!!
史蒂夫
与look aheads的乐趣。
"12.34.56.78".replace(/\.(?=[^.]*\.)/g,"_")
> "12.34.56.78".replace(/\.(?![^.]*$)/g,"_")
'12_34_56.78'
> "12.34.56.78.".replace(/\.(?![^.]*$)/g,"_")
'12_34_56_78.'
你对“最后一个点”的定义有点奇怪。 – Bergi 2014-10-07 12:36:00
就像我使用的复制和添加的文本模式。到最后。它应该匹配任何地方,而不仅仅是最后一个字符。 – epascarello 2014-10-07 12:39:12
你的是“字符串的最后一个字符,如果它是一个点”,但它应该是“最后一个*点字符*即使不在字符串末尾” – Bergi 2014-10-07 12:39:23
我测试你的表达完美的作品 - 我可以强加给你问它是如何工作的?我的意思是,我认为这部分(?= [^。] * \。)是创建异常的原因 - 但想理解语法,所以我知道它为什么起作用。非常感谢 !! – user815460 2014-10-07 12:33:46
阅读:http://www.regular-expressions.info/lookaround.html基本想法是展望未来,并在最终结果中做出热门。 – epascarello 2014-10-07 12:35:38
非常感谢 - 我测试过它,它的工作原理,如果在最后一个点字符后面有字符,Avinash的答案(下)不起作用,但您的解决方案确实如此。非常感谢,并感谢所有! – user815460 2014-10-07 12:40:59