根据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
标志未删除所有重复的行?
答案 0 :(得分:2)
也可以使用多线修改器:
var re = /^(.*)(\r?\n\1)+$/gm;
您的输入似乎包含多行,并且您希望删除整个文本中重复的一些行。
正则表达式中的一个条件是'line'的定义实际上是一个字符串在它自己的行中(没有其他字符串占用该行的任何部分)。
因此,多行修饰符(m)将使^
和$
匹配每个单独行的开头和结尾,而不是整个文本。
答案 1 :(得分:0)
正确的替换电话是:
var s = t.replace(re, "$1");
替换必须是字符串(或函数,对于更复杂的东西)