2

我有这个:

11111-22222-333---444---55--5566--6-----7-

我正在使用这段代码:

overlaps.replace(/-{2}/g, '-');

但是它不起作用,我想要的是-应该用一个替换多个实例,-如果有的话,应该删除结束破折号。

谁能告诉我我做错了什么?

4

4 回答 4

4

无需使用两个正则表达式。这应该可以正常工作。

overlaps.replace(/-+$|(-)+/g, '$1')

http://jsfiddle.net/wJLTB/3/

于 2012-05-18T13:39:23.813 回答
1

您可以使用:

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/

于 2012-05-18T13:28:48.433 回答
1

关闭但忘记了最终条件:

如果有的话,应该删除结尾的破折号。

所以改用这个:

overlaps.replace(/-+/g, "-").replace(/-+$/, "");
于 2012-05-18T13:31:29.697 回答
0

这对我来说看起来更干净:

overlaps.replace(/-(?=-|$)/g, '')

expr 读取:删除破折号后跟另一个破折号或输入结束。

于 2012-05-18T13:52:37.983 回答