如何在javascript中从String中替换\ Z.

时间:2013-01-25 13:05:06

标签: javascript regex

我有一个表示正则表达式str = "[A-z]\Z";的字符串 我想用$替换\ Z,因为\ j在正则表达式中不支持。

有办法做到这一点吗?我通过为\ Z创建一个正则表达式尝试了一些字符串替换,但它们没有按预期工作。它也适用于任何Z.有没有办法实现这一点? 这是我的示例代码,有问题

var expression = "[abczZ]\Z";
var regEx = new RegExp("\\Z", "g"); 
a=  expression.replace(regEx, "\\s");
alert(a);

1 个答案:

答案 0 :(得分:4)

您还需要一个额外的转义层:

var regEx = new RegExp("\\\\Z", "g");

因为你将正则表达式作为一个字符串,所以一个转义图层将被字符串“吃掉”,只保留正则表达式\Z,它与文字Z匹配。

你也可以使用正则表达式文字,在这种情况下你不需要双重转义:

var regEx = /\\Z/g;

当然,要在你的字符串上测试它,你首先需要修复你的字符串。目前它根本不包含任何反斜杠。 var expression = "[abczZ]\Z"会导致expression包含字符串"[abczZ]Z",因为您没有使用反斜杠。完全相同的问题,如前两段所述。

在JS控制台中自己尝试:

> "[abczZ]\Z"
"[abczZ]Z"
> "[abczZ]\\Z"
"[abczZ]\Z"
> "[abczZ]\Z".replace(new RegExp("\\\\Z", "g"), "$")
"[abczZ]Z"
> "[abczZ]\\Z".replace(new RegExp("\\\\Z", "g"), "$")
"[abczZ]$"