我不知道Tittle是否合适(对不起)。 首先,我必须告诉你我是javascript的新手。
我想让javascirpt改变URL并在点击时重定向它(在boookmark栏上创建)。 我们的想法是更改网址:
https://mail.google.com/mail/u/0/h/[12_random_aphanumeric]/?&th=[16_random_aphanumeric]&v=c&s=a
到
https://mail.google.com/mail/u/0/#all/[16_random_aphanumeric]
例如更改:
https://mail.google.com/mail/u/0/h/bv293r3qycgk/?&th=16032287bb796882&v=c&s=a
到
https://mail.google.com/mail/u/0/#all/16032287bb796882
所以我使用“window.location.assign”,如:
javascript: window.location.assign(window.location.toString().replace('*?&th=', 'https://mail.google.com/mail/u/0/#all/')); window.location.assign(window.location.toString().replace('&v=c&s=a', ' '));
当然它不起作用。
我只是不知道如何使用[*]通配符。
任何建议都将不胜感激。
答案 0 :(得分:0)
.replace
不支持"通配符"。您正在寻找的是regular expression。正则表达式中的*
称为Kleene closure。
gmailUrlRegex = /(https:\/\/mail\.google\.com\/mail\/u\/0)\/h\/[A-z0-9]{12}\/\?&th=([A-z0-9]{16}).*/;
location.href = location.href.replace(gmailUrlRegex, "$1/#all/$2");
可视化正则表达式:https://www.debuggex.com/r/eAkLwrgNQcuUCisN
var input = "https://mail.google.com/mail/u/0/h/bv293r3qycgk/?&th=16032287bb796882&v=c&s=a";
console.log(input.replace(/(https:\/\/mail\.google\.com\/mail\/u\/0)\/h\/[A-z0-9]{12}\/\?&th=([A-z0-9]{16}).*/, "$1/#all/$2"));

答案 1 :(得分:0)
捕获th
参数并连接到新路径
var str='https://mail.google.com/mail/u/0/h/1a2b3c4d5e6f/?&th=abcd1234abcd1234&v=c&s=a',
th = str.match(/(th=[a-z0-9]{16})/i)[0],
url = 'https://mail.google.com/mail/u/0/#all/' + th;
console.log(url)