给定此查询字符串:
?cgan=1&product_cats=mens-jeans,shirts&product_tags=fall,classic-style&attr_color=charcoal,brown&attr_size=large,x-small&cnep=0
Run Code Online (Sandbox Code Playgroud)
如何从仅'product_cat, product_tag, attr_color, attr_size'返回的这些参数类型中提取值'mens-jeans,shirts,fall,classic-style,charcoal,brown,large,x-small?
我尝试将非捕获组用于param类型并仅为值捕获组,但它返回两者.
(?:product_cats=|product_tags=|attr\w+=)(\w|,|-)+
Run Code Online (Sandbox Code Playgroud)
您可以使用以下方式收集该值
(?:product_cats|product_tags|attr\w+)=([\w,-]+)
Run Code Online (Sandbox Code Playgroud)
请注意,字符类 ( [\w,-]+) 比替代列表 ( (\w|,|-)*) 高效得多,并且我们避免了仅捕获最后一个字符的问题。
这是一个代码示例:
(?:product_cats|product_tags|attr\w+)=([\w,-]+)
Run Code Online (Sandbox Code Playgroud)
var re = /(?:product_cats|product_tags|attr\w+)=([\w,-]+)/g;
var str = '?cgan=1&product_cats=mens-jeans,shirts&product_tags=fall,classic-style&attr_color=charcoal,brown&attr_size=large,x-small&cnep=0';
var res = [];
while ((m = re.exec(str)) !== null) {
res.push(m[1]);
}
document.getElementById("res").innerHTML = res.join(",");Run Code Online (Sandbox Code Playgroud)