0

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

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

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

1 回答 1

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]$"
于 2013-01-25T13:09:48.270 回答