Javascript替换表达式

Javascript替换表达式,javascript,jquery,Javascript,Jquery,在javascript中替换一些url变量时遇到问题。我正在尝试替换&s=和&so=的值。下面是我的代码: url = url.replace(/(s=).*?(&)/, '$1' + $("#sort_by").val() + '$2'); url = url.replace(/(so=).*?(&)/, '$1' + $("#sort_ord").val() + '$2'); 第一次替换没有问题,始终替换s值,但因此变量似乎从未被替换。将代码更改为: url = url.r

在javascript中替换一些url变量时遇到问题。我正在尝试替换
&s=
&so=
的值。下面是我的代码:

url = url.replace(/(s=).*?(&)/, '$1' + $("#sort_by").val() + '$2');
url = url.replace(/(so=).*?(&)/, '$1' + $("#sort_ord").val() + '$2');

第一次替换没有问题,始终替换
s
值,但
因此
变量似乎从未被替换。

将代码更改为:

url = url.replace(/(s=)[^&]*/, '$1' + $("#sort_by").val());
url = url.replace(/(so=)[^&]*/, '$1' + $("#sort_ord").val());

这应该适用于大多数URL(但不是RFC允许的所有URL)。这充分利用了
&
主要用于在URL的查询字符串中分隔键值对这一事实。

您能给出一个URL示例吗?您想做什么?你为什么要这么做?对我来说似乎是错的。
(&?
(&|$)
)@poncha:URL中也可能有片段(尽管很少与查询一起看到)。无论哪种方式都失败。它们总是“&”(固定url结构)-尝试更改,但仍然无效:(@nhahdh然后需要
([#&]|$)
,准确地说;)我的答案在多个级别上都是错误的(请参见编辑历史记录)。最后的编辑至少给出了测试代码的正确事实。