我有这个:
11111-22222-333---444---55--5566--6-----7-
我正在使用此代码:
overlaps.replace(/-{2}/g, '-');
然而它不起作用,我想要的是-
的多个实例应替换为一个-
,如果有的话,应删除结尾短划线。
有人可以说出我做错了吗?
答案 0 :(得分:4)
答案 1 :(得分:1)
您可以使用:
overlaps.replace(/-+/g, "-").replace(/-$/, "");
DEMO: http://jsfiddle.net/wJLTB/1/
另一种方法是使用回调函数:
overlaps.replace(/-+/g, function(str, p1, offset) {
return offset.lastIndexOf("-") == p1 ? "" : "-";
})
答案 2 :(得分:1)
关闭但忘记了最终条件:
如果有的话,应该删除和结束破折号。
所以请改用:
overlaps.replace(/-+/g, "-").replace(/-+$/, "");
答案 3 :(得分:0)
对我来说这看起来更干净:
overlaps.replace(/-(?=-|$)/g, '')
expr读取:删除破折号后跟另一个破折号或输入结束。