正则表达式替换不能按预期在 nodejs 上工作的换行符
Regex to replace newlines not working on nodejs as intended
我有我在 regex101 上测试过的正则表达式,但是当我在 nodejs 中使用它时,它不会替换换行符。正则表达式是 /([ ]*\n)+/gm
。它应该用一个换行符替换多个换行符。代码如下。此代码是我的 vscode 扩展的一部分。有人可以告诉我我做错了什么吗?
function format(str) {
const regex = /([ ]*\n)+/gm;
const subst = `\n`;
const result = str.replace(regex, subst);
return result;
}
function format(str) {
const regex = /([ ]*\n)+/gm;
const subst = `\n`;
const result = str.replace(regex, subst);
return result;
}
console.log(format(`abc
d
s
s`));
这个问题很可能与 CRLF 行结尾有关。
您可以使用
str.replace(/(?:\s*\n)+/g, '\n')
请注意,您不需要在此处 m
标记。
查看 JavaScript 演示:
const str = "abc\r\n \r\nd\r\n\r\ns\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\ns";
console.log(str.replace(/(?:\s*\n)+/g, '\n'));
const str2 = "abc\n \nd\n\ns\n\n\r\n\r\n\n \n\r\n \n\ns";
console.log(str2.replace(/(?:\s*\n)+/g, '\n'));
我有我在 regex101 上测试过的正则表达式,但是当我在 nodejs 中使用它时,它不会替换换行符。正则表达式是 /([ ]*\n)+/gm
。它应该用一个换行符替换多个换行符。代码如下。此代码是我的 vscode 扩展的一部分。有人可以告诉我我做错了什么吗?
function format(str) {
const regex = /([ ]*\n)+/gm;
const subst = `\n`;
const result = str.replace(regex, subst);
return result;
}
function format(str) {
const regex = /([ ]*\n)+/gm;
const subst = `\n`;
const result = str.replace(regex, subst);
return result;
}
console.log(format(`abc
d
s
s`));
这个问题很可能与 CRLF 行结尾有关。
您可以使用
str.replace(/(?:\s*\n)+/g, '\n')
请注意,您不需要在此处 m
标记。
查看 JavaScript 演示:
const str = "abc\r\n \r\nd\r\n\r\ns\r\n\r\n\r\n\r\n\r\n \r\n\r\n \r\n\r\ns";
console.log(str.replace(/(?:\s*\n)+/g, '\n'));
const str2 = "abc\n \nd\n\ns\n\n\r\n\r\n\n \n\r\n \n\ns";
console.log(str2.replace(/(?:\s*\n)+/g, '\n'));