gpt4 book ai didi

javascript - 替换意外删除的新行

转载 作者:行者123 更新时间:2023-11-30 14:19:36 25 4
gpt4 key购买 nike

我发现了一个我无法解释的替换和正则表达式的奇怪行为。我有一个 trim 功能,可以从文本的每一行的开头和结尾删除空格:

function trim(str) {
return str.replace(/^\s+|\s+$/igm, '');
}

但是当文本用\r\n 而不是\n 多行时,它也会删除新行:

console.log(trim('A string \n- with several \n- lines'))
// A string\n- with several\n- lines
console.log(trim('A string \r\n- with several \r\n- lines'))
// A string- with several- lines

有人可以告诉我这是我不理解的预期行为还是只是 JavaScript 的缺陷之一?

编辑:我不需要“修复”代码,我可以使用 split + map + trim 来完成:

'A string \r\n- with several \r\n- lines'.split('\r\n').map(x => x.trim()).join('\r\n')

我只是对这两个示例中的不同行为感到好奇。如果我使用匹配而不是替换我得到这个:

'A string \r\n- with several \r\n- lines'.match(/^\s+|\s+$/igm)
Array(4) [ " \r", "\n", " \r", "\n" ]
'A string \n- with several \n- lines'.match(/^\s+|\s+$/igm)
Array [ " ", " " ]

什么?

最佳答案

igm 更改为 ig。问题是修饰符 m(多行)。

关于javascript - 替换意外删除的新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52974180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com