Java中无效的转义序列(有效的转义序列为\b \t \n \f \r \" \' \\)。

4
我正在使用与父域和I-Frame域匹配的URL匹配。在Java类中加入以下代码时出现错误。
out.print("ref = url.match(/:\/\/(.[^/]+)/)[1];");

这行代码出现了错误:

Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )

Original script:

    out.print("<script>");

//需要将下面这行代码放在Java类中,因此使用out.print(" ");

ref = url.match(/:\/\/(.[^/]+)/)[1];
out.print("</script>");

如何正确使用此功能?


2
Java和JavaScript不一样!!! :D - NoobEditor
@NoobEditor:最终这更像是一个Java问题。它是Java输出JavaScript代码,而Java字符串需要转义。 - T.J. Crowder
@T.J.Crowder:OP在这个问题中标记了javascript,而这里的正则表达式纯粹是关于Java的...所以我留下了一条评论!! :) - NoobEditor
那是在Java类中添加的JavaScript代码..所以添加了一个JavaScript标签..@NoobEditor - user3152748
@NoobEditor:正则表达式是纯JavaScript编写的,该表达式是由Java方法输出的。 - T.J. Crowder
2个回答

8
在Java字符串中,如果想要实际输出反斜杠,必须使用另一个反斜杠进行转义。因此,在您的out.print行中,所有的\都应该用另一个\进行转义。
out.print("ref = url.match(/:\\/\\/(.[^/]+)/)[1];");
                      //     ^  ^

这会产生以下输出:
ref = url.match(/:\/\/(.[^/]+)/)[1];

1

当您需要转义字符时,必须使用\\而不是\


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接