Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript replace()不替换包含文字字符串的文本\r\n_Javascript_Regex_Replace_Expression - Fatal编程技术网

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

javascript replace()不替换包含文字字符串的文本\r\n,javascript,regex,replace,expression,Javascript,Regex,Replace,Expression,使用这段代码可以在不使用javascript的情况下修剪隐藏字符,如回车符和换行符 value = value.replace(/[\r\n]*/g, ""); 但是,当代码实际包含\r\n文本时,我该如何修剪它而不影响内容中的r和n?我尝试过以下代码: value = value.replace(/[\\r\\n]+/g, ""); 在这段文字上: {"client":{"werdfasreasfsd":"asdfRasdfas\r\nMCwwDQYJKoZIhvcNAQEBBQADGw.

使用这段代码可以在不使用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文本?

如果要匹配literal
\r
和literal
\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, "");
关于
(?:)
它意味着一个非捕获组,因为默认情况下,当您将某个内容放入一个普通组
()
中时,它会被捕获到一个编号的变量中,您可以在正则表达式本身的其他地方使用,或者在匹配数组中使用后者


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

要删除它们,这似乎对我有用:

value = value.replace(/[\r\n]/g, "");
字符集后面不需要
*
,因为
g
标志为您解决了这个问题

注意,这将删除所有
\r
\n
字符,无论它们是否按此顺序

此选项的工作演示:


如果只想在此精确顺序中删除这些字符(例如,仅当
\r
后面紧跟着
\n
时),可以使用以下方法:

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

此选项的工作演示:

如果您的文本包含大量\r\n内容,并且希望保存所有内容,请尝试此选项

value.replace(/(?:\\[rn]|[\r\n])/g,"<br>")
value.replace(/(?:\\[rn]\[\r\n])/g,“
”)

我是否也应该将我的第一位代码更新为
value=value.replace(/(\r\124;\ n)+/g,”);
以及()和[]之间的区别是什么本例中的括号?我见过?:以前使用过,但我不明白它真正的作用,你能详细说明一下它的功能吗?@Vince我对正则表达式做了进一步的改进,如果你还有其他问题,请随时提问。为了我自己,我一直坚持你最初的建议,直到我对这方面有了一点了解。我“我已将我的第一行代码更新为
value=value。替换(/(?:\r\124n)+/g,”);
和我的第二行代码更新为
value=value。替换(/(?:\\r\124n)+/g,”;
现在,感谢您和jfriend00的建议。对“\r、换行符\n以及文字\r和“\n”的编辑工作得非常好,谢谢!”!