4

我的正则表达式不是那么热,所以为这个非常新的问题道歉。

我正在使用 String.replace 将字符串“../../libs/bootstrap/less”更改为“bootstrap”。目前我的正则表达式如下所示:

myString.replace(\.\.\/\.\.\/libs\/bootstrap\/less/g, 'bootstrap);

我认为必须有更好的方法来逃避这条路。是否可以像 /\"../../foo/bar/baz"/ 一样指定要转义的一整块内容?

4

2 回答 2

1

据我所知,正则表达式中没有全局/块转义。如果您想避免在这种情况下转义,您也可以执行以下操作:

myString.replace(/([.]{2}[/]){2}libs[/]bootstrap[/]less/g, "bootstrap");

. 和 / 在字符集中指定时不需要转义 []

于 2012-10-18T02:01:37.190 回答
0

为了更容易在正则表达式中引用什么,您可以使用以下代码:

RegExp.quote = function(str) {
     return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
};

然后你像这样应用它:

var expr = RegExp.quote('../../libs/bootstrap/less');
mystring.replace(new RegExp(expr, 'g'), 'bootstrap');
于 2012-10-18T01:54:39.697 回答