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