我正在尝试替换以下内容:
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";