如果连续出现两次以上,请用新词替换该事件 angularjs

If an occurance is more than two times contiunously replace that occurance with a new word angularjs

我有一条来自后端的文本,其中有多个中断,包括 2 次中断、4 次中断或 6 次中断,我想用 2 次中断替换中断。例如:如果在一个字符串中我有四个连续的中断,那么我只想用 2 个中断替换这些中断。

我尝试了以下代码,但没有成功:

TMSApp.filter('newlinesmatch', function () {
    return function(text) {
        var str = '<br>';
        var count = (text.match(/<br>/g) || []).length;
        if(count > 2){
            return String(text).replace(/<br>/g,'<br><br>');    
        }
    }
});

有人可以帮忙吗?

您可以用 <br><br> 替换任意数量的连续出现的 <br>,如下所示:

TMSApp.filter('newlinesmatch', function () {
    return function(text) {
        return text.replace(/(<br>)+/g, '<br><br>');
    }
});

注意:我知道您提到过您总是会连续获得 2、4 或 6 次休息。但是,值得注意的是,上面的解决方案将用 <br><br>.

替换任意数量的连续出现(甚至是单个出现)

编辑:

根据下面的评论和一个真实的例子,我做了下面的更改。请注意,原始答案适用于最初描述的场景,其中需要替换 CONSECUTIVE <br>s。 REAL 示例没有连续的 <br>,因为每对之间有一个 space。以下代码适用于这种情况:

.filter('newlinesmatch', function () {
    return function(text) {
      return text.replace(/(<br>\s*)+/g, '<br><br>');
    }
});

这里是一个可用的 plunker,其中提供了示例数据:

http://plnkr.co/edit/ztcsbJoJ51ZF8FcJylbC?p=preview