用javascript中的预期url替换javascript回发

用javascript中的预期url替换javascript回发,javascript,regex,replace,Javascript,Regex,Replace,我正在尝试替换以下内容: javascript:__doPostBack('ctl33$ShowLists','DoList|2711|311') 与 只有数字2711和311可能会改变,因此我想保留它们。 我试过这个: var oldHref = "javascript:__doPostBack('ctl33$ShowLists','DoList|2711|311')"; var newHref = oldHref.replace(/javascript:__doPostBack\('ctl

我正在尝试替换以下内容:

javascript:__doPostBack('ctl33$ShowLists','DoList|2711|311')

只有数字2711和311可能会改变,因此我想保留它们。 我试过这个:

var oldHref = "javascript:__doPostBack('ctl33$ShowLists','DoList|2711|311')";
var newHref = oldHref.replace(/javascript:__doPostBack\('ctl33\$ShowLists','DoList|(\d+)|(\d+)'\)/, "main.aspx?action=listshow&id=$1&row=$2#auto");
我已经做了一些正则表达式,但不用说它们没有解决我的问题,我是否忘记了转义?

管道,
(RegExp“OR”)也必须转义

var newHref = oldHref.replace(/javascript:__doPostBack\('ctl33\$ShowLists','DoList\|(\d+)\|(\d+)'\)/, "main.aspx?action=listshow&id=$1&row=$2#auto");
PS.除了使用
.replace
,您还可以只匹配给定字符串的相关部分,并将其连接起来:

var oldHref = "javascript:__doPostBack('ctl33$ShowLists','DoList|2711|311')";
var matches = /(\d+)\|(\d+)/.exec(oldHref);
var newHref = "main.aspx?action=listshow&id=" + matches[1] + "&row="  + matches[2] + "#auto";

ASP.NET服务器表单默认使用POST方法。要使用GET方法,您需要使用control或实现OnClientClick事件处理程序并更改“document.location.href”属性。

我没有访问服务器的权限,我只是一个用户,因此我会在页面加载到客户端后执行脚本。您的想法没有替换会更好,谢谢!我甚至不知道管道的“或”功能,谢谢!事实证明,我确实需要它,因为第二个匹配也可以是“自动”,所以我使用了那里的管道:)
var oldHref = "javascript:__doPostBack('ctl33$ShowLists','DoList|2711|311')";
var matches = /(\d+)\|(\d+)/.exec(oldHref);
var newHref = "main.aspx?action=listshow&id=" + matches[1] + "&row="  + matches[2] + "#auto";