希望这是一个简单的问题。
如果我有这样的文字:
Orange
Apples
Melons
Bananas
...如何用单个空白行替换所有出现的多个空白行,最后是这样:
Orange
Apples
Melons
Bananas
小提琴:http://jsfiddle.net/Jq4pT/ 在插入第二个框之前,需要从第一个框的输入中删除多个空白行。
我找到了this link,但我不确定如何在Javascript中使用该正则表达式?
感谢。
答案 0 :(得分:2)
就这样使用它:
var inputString = '...';
var outputString = inputString.replace(/^(\s*\r\n){2,}/, "\r\n")
答案 1 :(得分:1)
这是一个老问题,但我不在乎,它首先出现在谷歌搜索中。
您可以使用以下代码执行此操作:
var EOL = string.match(/\r\n/gm)?"\r\n":"\n";
var regExp = new RegExp("("+EOL+"){3,}", "gm");
string = string.replace(regExp, EOL+EOL);
g
修饰符替换所有匹配项m
修饰符将regex应用于整个多行字符串,而不是每行。答案 2 :(得分:0)
使用简单的正则表达式:
str = "whatever your string is";
reg = /\n\n\n/;
str.replace(reg, "\n\n");
答案 3 :(得分:0)
此线程中的其他单行答案是错误的,虽然这些答案不会用 2 个新行替换所有新行序列,但只会执行一次。这些将在字符串上运行一次。这意味着如果有 6 条新线,我将再次替换 3 到 2 和接下来的 3 到 2。所以结果将是 4 个新行。然后您需要再次运行此代码,这会将 3 个新行替换为 2 个新行,剩余的 1 个新行将保持不变,因此在第二次运行后,您将有 3 个新行。如果你只运行第三次,那么你会从 6 个新行减少到 2 个。
所以正确的单行答案是这样的:
yourString.replace(/^\s*[\r\n]|^\s+| +(?= )| +$|\s+$(?![^])/gm, '\n\n');
完整样本:
const a = `
a
b
`;
const result = a.replace(/^\s*[\r\n]|^\s+| +(?= )| +$|\s+$(?![^])/gm, '\n\n');
console.log(result);
结果将如您所料:
为什么其他答案是错误的?看看这个:
所有“新行”见\n
替换了一些,但不是全部
更换了一些,但又不是全部