javascript replace() 不替换包含文字\r\n 字符串的文本

标签 javascript regex replace expression

使用这段代码可以去除隐藏字符,例如回车符和换行符,而无需使用 javascript 就可以了:

value = value.replace(/[\r\n]*/g, "");

但是当代码实际上包含\r\n 文本时,我该怎么做才能在不影响内容中的 r 和 n 的情况下对其进行 trim ?我试过这段代码:

value = value.replace(/[\\r\\n]+/g, "");

关于这段文字:

{"client":{"werdfasreasfsd":"asdfRasdfas\r\nMCwwDQYJKoZIhvcNAQEBBQADGw......

我最终得到了这个:

{"cliet":{"wedfaseasfsd":"asdfRasdfasMCwwDQYJKoZIhvcNAQEBBQADGw......

旁注:它保留了 R 和 N 的大写版本,因为我没有在末尾包含/i 标志,在这种情况下没关系。

我该怎么做才能只删除在字符串中找到的\r\n 文本

最佳答案

如果你想匹配文字 \r 和文字 \n 那么你应该使用以下内容:

value = value.replace(/(?:\\[rn])+/g, "");

您可能认为将文字 \r\n[\\r\\n] 相匹配是正确的做法它有点令人困惑,但它不起作用,原因如下:

请记住,在字符类中,每个字符代表一个字母或符号,它不代表一个字符序列,它只是一组字符。

所以字符类[\\r\\n]实际上匹配文字字符\rn 作为单独的字母而不是序列。

编辑:如果您想替换所有回车符 \r、换行符 \n 以及文字 \r 和 '\n` 那么你可以使用:

value = value.replace(/(?:\\[rn]|[\r\n]+)+/g, "");

关于 (?:) 它的意思是一个非捕获组,因为默认情况下当你把一些东西放入一个普通的组 () 然后它会被捕获到一个编号的组中您可以在正则表达式本身或匹配数组中的其他地方使用的变量。

(?:) 阻止捕获值并导致比 () 更少的开销,有关更多信息,请参阅 this article .

关于javascript replace() 不替换包含文字\r\n 字符串的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20023625/

相关文章:

javascript - 无法捕获 CKEditor 更改事件

java - 如何从字符串中获取第二个单词?

regex - 使用 Powershell 将第二次出现的 "-"替换为 "_"

javascript正则表达式替换html

javascript - 在 x 时间后一个接一个地运行 JavaScript 函数

javascript - 获取数组中元素的数量(JS)

javascript - Table .append() 同时发生

Java : Getting effected sentence in Google-diff-match-patch

java - 'stringList[3]' 等字符串的正则表达式

java - 如何使用变量和标记实现马尔可夫算法?