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