使用通配符更改URL

时间:2017-12-08 06:39:18

标签: javascript html url url-rewriting friendly-url

我不知道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', ' '));

当然它不起作用。

我只是不知道如何使用[*]通配符。

任何建议都将不胜感激。

2 个答案:

答案 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)