繁体   English   中英

用相同数量的字符替换正则表达式

[英]Replace regex with same number of chars

我需要使用我定义的字符,用相同数量的字符替换使用正则表达式找到的内容。

例如:

content: "abcdefghi*!?\"asd";

应该变成:

content: "-----------------";

这是我的正则表达式:

new RegExp("('|\").*('|\")", "gm")

这是我从这个答案中尝试的( Javascript Regex-用相同数量的另一个字符替换字符序列 ):

source_text_safe = source_text.replace(new RegExp("('|\").*('|\")", "gm"), function ($0, $1, $2, $3) {
            return $1 + (new Array($2.length + 1).join("-")) + $3;
        });

但这是行不通的。

在此输入上使用它:

::selected {
    color: purple
}
a {
    color: purple
}
a:hover {
    color: purple
}
a {
    color: purple
}
a:not("foobar\";{}omg") {
    content: 'example\';{} text';
    content: "example\";}{ text"
}
a {
    color: purple
}

我得到以下输出:

::selected {
    color: purple
}
a {
    color: purple
}
a:hover {
    color: purple
}
a {
    color: purple
}
a:not("-117) {
    content: '-150;
    content: "-184
}
a {
    color: purple
} 

如果我使用正则表达式将内容替换为null则可以正常工作,因此正则表达式不是问题。

有什么帮助吗?

替换功能需要在正则表达式中包含三个(捕获)组,但是其中只有两个。 因此, $3获得匹配的偏移量,这是您得到的意外数字。 有关详细信息,请参见Mozilla JS参考中的将功能指定为参数

对正则表达式使用"('|\\")(.*)('|\\")" (3组)之类的东西。

好吧,看来我已经解决了...

source_text_safe = source_text.replace(new RegExp("('|\").*('|\")", "gm"), function ($0) {
    return (new Array($0.length + 1).join("-"));
});

感谢您的所有答案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM