将javascript回发替换为javascript中预期的url

Replace javascript postback with the expected url in javascript

本文关键字:javascript url 替换      更新时间:2023-09-26

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

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

带有

main.aspx?action=listshow&id=2711&row=311#auto

只有数字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方法,您需要使用LinkButton控件或实现OnClientClick事件处理程序,并更改"document.location.href"属性。