2017-12-08 16 views
0

제목이 적합한 지 아닌지 (미안) 모르겠습니다. 먼저 자바 스크립트에서 초보자라고 말해야합니다.와일드 카드로 URL을 변경하십시오.

URL을 변경하고 클릭시 리디렉션하는 javascirpt를 만들고 싶습니다 (boookmark bar에서 생성).

https://mail.google.com/mail/u/0/h/bv293r3qycgk/?&th=16032287bb796882&v=c&s=a

에 예 변경에 대한

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]

: 아이디어는 URL을 변경하는 것입니다 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

.replace은 "와일드 카드"와 같은 것을 지원하지 않습니다. 당신이 찾고있는 것은 regular expression입니다. regexp의 *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"));

0

th PARAM을 캡처하고 새로운 경로로 연결할

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)