[英]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.