使用这段代码修剪出隐藏的字符,如回车和换行,没有使用javascript就好了:
value = value.replace(/[\r\n]*/g, "");
但是当代码实际上包含\ r \ n文本时,我该如何修剪它而不影响我内容中的r和n?我试过这段代码:
value = value.replace(/[\\r\\n]+/g, "");
关于这一段文字:
{"client":{"werdfasreasfsd":"asdfRasdfas\r\nMCwwDQYJKoZIhvcNAQEBBQADGw......
我最终得到了这个:
{"cliet":{"wedfaseasfsd":"asdfRasdfasMCwwDQYJKoZIhvcNAQEBBQADGw......
旁注:它只留下R和N的大写版本,因为我没有在末尾包含/ i标志,在这种情况下没问题。
如何只删除字符串中的\ r \ n文本?
答案 0 :(得分:25)
如果您想匹配文字\r
和文字\n
,那么您应该使用以下内容:
value = value.replace(/(?:\\[rn])+/g, "");
您可能认为将文字\r
和\n
与[\\r\\n]
匹配是正确的方法,这有点令人困惑,但它不起作用,原因如下:
请记住,在字符类中,每个单个字符代表一个字母或符号,它不代表一个字符序列,它只是一个 set 字符。
因此,字符类[\\r\\n]
实际上将文字字符\
,r
和n
匹配为单独的字母,而不是序列。
修改:如果您要替换所有回车\r
,换行符\n
以及文字\r
和'\ n`,那么您可以使用:
value = value.replace(/(?:\\[rn]|[\r\n]+)+/g, "");
关于(?:)
它表示非捕获组,因为默认情况下,当您将某些内容放入常规组()
时,它会被捕获到一个编号变量中,您可以在正则表达式中的其他位置使用它本身,或者匹配数组中的后者。
(?:)
会阻止捕获值并导致比()
更少的开销,有关详细信息,请参阅this article。
答案 1 :(得分:5)
如果您的文字有很多\ r \ n并想要保存所有这些文字,请尝试使用
value.replace(/(?:\\[rn]|[\r\n])/g,"<br>")
答案 2 :(得分:1)
要删除它们,这似乎对我有用:
value = value.replace(/[\r\n]/g, "");
在字符集后面不需要*
,因为g
标志为您解决了这个问题。
注意,这将删除所有\r
或\n
个字符,无论它们是否在此精确序列中。
此选项的工作演示:http://jsfiddle.net/jfriend00/57GtJ/
如果您只想按照这个确切的顺序删除这些字符(例如,只有当\r
后面跟\n
时,才能使用此字符:
value = value.replace(/\r\n/g, "");
此选项的工作演示:http://jsfiddle.net/jfriend00/Ta3sn/