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

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";

09-04 06:49
查看更多