我有一个表示正则表达式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);
答案 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]$"