用通配符更改 URL
Change URL with wildcard
不知道这个标题适不适合(抱歉)。
首先,我必须告诉你,我在 javascript.
是个新手
我想让 javascirpt 改变 URL 并在点击时重定向它(在书签栏上创建)。
这个想法是改变 URL:
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', ' '));
当然它不起作用。
我只是不知道如何在上面使用 [*] 通配符。
如有任何建议,我们将不胜感激。
.replace
不支持 "wildcard" 这样的东西。您要找的是 regular expression. The *
in regexp is called a 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, "/#all/");
可视化正则表达式: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}).*/, "/#all/"));
捕获 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)
不知道这个标题适不适合(抱歉)。 首先,我必须告诉你,我在 javascript.
是个新手我想让 javascirpt 改变 URL 并在点击时重定向它(在书签栏上创建)。 这个想法是改变 URL:
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', ' '));
当然它不起作用。
我只是不知道如何在上面使用 [*] 通配符。
如有任何建议,我们将不胜感激。
.replace
不支持 "wildcard" 这样的东西。您要找的是 regular expression. The *
in regexp is called a 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, "/#all/");
可视化正则表达式: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}).*/, "/#all/"));
捕获 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)