使用这段代码可以去除隐藏字符,例如回车符和换行符,而无需使用 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]
实际上匹配文字字符\
、r
和n
作为单独的字母而不是序列。
编辑:如果您想替换所有回车符 \r
、换行符 \n
以及文字 \r
和 '\n` 那么你可以使用:
value = value.replace(/(?:\\[rn]|[\r\n]+)+/g, "");
关于 (?:)
它的意思是一个非捕获组,因为默认情况下当你把一些东西放入一个普通的组 ()
然后它会被捕获到一个编号的组中您可以在正则表达式本身或匹配数组中的其他地方使用的变量。
(?:)
阻止捕获值并导致比 ()
更少的开销,有关更多信息,请参阅 this article .
关于javascript replace() 不替换包含文字\r\n 字符串的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20023625/