正则表达式Javascript替换

4
function example(){
   var quantity = "http://www.example.com/index.php?brandid=b%123&quantity=20";
   quantity = quantity.replace(-what regular expression should i user-, "quantity=50");
}

我希望将链接中仅包含quantity=20的部分替换为quantity=50。我已经尝试了一些正则表达式,例如:

replace(/quantity=[^\d]/g,"quantity=50");
replace(/quantity=[^0-9]/g,"quantity=50");

我希望能够得到正则表达式方面专家的帮助,谢谢!


在[0-9]部分不要使用插入符号^。插入符号表示查找除了其后面的内容以外的任何内容。相反,尝试使用[0-9]+,它将匹配一个或多个数字。 - Ian Hunter
3个回答

3
replace(/quantity=[\d]+/g,"quantity=50")

那样行不通。你要么把 + 放在括号外面,要么更好的方法是根本不使用括号。字符类中的所有内容都代表一个字符。 - Tikhon Jelvis
1
?some_other_quantity=5&quantity=9怎么样? - alex
谢谢!我已经解决了我的问题……这让我在早上头疼不已 =( - ajieh89

0

这里是一种你可以实现它的方式。它只能用于查询字符串,而不是整个URL。

function example(){
   var quantity = 'http://www.example.com/index.php?brandid=b%123&quantity=20',
       a = document.createElement('a');

    a.href = quantity;

    a.search = a.search.replace(/([?&;]quantity=)\d+/, '$150');;

   return a.href;
}

jsFiddle


anchor.search将以?开头,因此应该是a.search = a.search.replace(/([&^;\?]quantity=)[\d\.]+/, '$150');也加上了小数点,以防万一。 - rgthree

0
replace(/[?&]quantity=\d+([&]?)/g,"$1quantity=50$2");

试试这个 ^


([?&])

将符号'?''&'(只有一个字符)组合在一起,作为命名为$1的组

\d+

查找至少一个数字,如果有>1个数字,则查找最长的连续字符串数字

([&]?)

将空字符串(如果在末尾)或'&'分组为名称为$2的组

'?'表示匹配零次或一次

通过将匹配的一组分组在()...()....()中,然后在结果中使用它作为$1,$2,$3等,您可以执行搜索和替换以及许多更复杂的操作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接