在javascript中删除带有正则表达式的重复行

时间:2013-10-01 14:58:04

标签: javascript regex

根据regular-expressions.info,我应该可以使用以下模式删除重复的行(只要它们是连续的):^(.*)(\r?\n\1)+$

这在Notepad ++中非常简单,我只用\1点击“全部替换”,并删除所有重复项。但是,从<textarea>中提取文本时,我无法使用javascript。

var t = $("#input").val();
var re = /^(.*)(\r?\n\1)+$/g;
var s = t.replace(re, "$1");
console.log(s);

为什么添加g标志未删除所有重复的行?

2 个答案:

答案 0 :(得分:2)

也可以使用多线修改器:

var re = /^(.*)(\r?\n\1)+$/gm;

您的输入似乎包含多行,并且您希望删除整个文本中重复的一些行。

正则表达式中的一个条件是'line'的定义实际上是一个字符串在它自己的行中(没有其他字符串占用该行的任何部分)。

因此,多行修饰符(m)将使^$匹配每个单独行的开头和结尾,而不是整个文本。

答案 1 :(得分:0)

正确的替换电话是:

var s = t.replace(re, "$1");

替换必须是字符串(或函数,对于更复杂的东西)