我正在使用www.regexr.com来检查JavaScript中的正则表达式。 我们假设我有以下字符串:
/facilityservices/show/1/price_min:sdc155sd/
现在我的任务是找到price_min:sdc155sd并将其删除。我写了
var patterns_array = [
'price_min:\w+'
];
var pattern = new RegExp(patterns_array.join("|"), "g");
new_url = current_url.replace(pattern, '');
在这个RegExp上面的网站上匹配这个词。但是,当我检查我的网站时它不起作用。我有错误的地方。犯错误太容易了......
答案 0 :(得分:0)
您的模式不起作用,因为您是从字符串创建的。在这种情况下,这不是必要的:
var pattern = /price_min:\w+/;
会这样做。
当您从字符串创建正则表达式时,您必须处理字符串语法也认为反斜杠字符(\
)特殊的事实。因此,当RegExp构造函数看到您的字符串将其解释为正则表达式时,“w”之前的反斜杠将消失。如果需要从字符串创建正则表达式,则必须将反斜杠字符加倍:
var pattern = new RegExp("price_min:\\w+");
同样,在这种特殊情况下,这是不必要的。
答案 1 :(得分:0)
这是因为RegExp需要\w
转义\\w
(作为普通字符串)。
var patterns_array = [
'price_min:\\w+'
];
使用构造函数时,正常的字符串转义规则 (当包含在字符串中时带有\的特殊字符前面) 必要
此外,上述方法仍有效,但您的结果中会留下两个尾部斜杠//
,您应该将其应用于此:
price_min:\\w+\/?