2017-07-24 62 views
0

我試圖創建一個書籤,它允許我操縱一些URL以便在新的CMS中快速切換內容編輯視圖和生產。如何使用正則表達式替換另兩個字符串之間的字符串並刪除最後5個字符

目前,我可以用CMS版本替換URL的乞求字符串,這很好。但是,我還需要能夠刪除字符串末尾的「.html」,這正是我正在努力的。

我現在已經

以下是我目前的書籤:

<a href="javascript:(function(){window.location=window.location.toString 
().replace(/^http(.*)\/en\//,'https://cms.ca/en_lg/').replace(/^https:(.*) 
\/fr\//,'https://cms.ca/fr_lg/');})();">Switch - CMS</a> 

通過上述書籤,我可以做以下的(我刪除在前面的「H」,因爲他們又不是真正的鏈接):

更改此:

  • TTP://www.webby.yay.com/en_lg/folder/anotherfolder/anotherfolder/page.html

這樣:

  • 載荷大小://cms.ca/en_lg/folder /anotherfolder/anotherfolder/page.html

什麼,我想要做的

更改此:

  • TTP://www.webby.yay.com/en_lg/folder/anotherfolder/anotherfolder/page.html」

這樣:

  • 載荷大小://cms.ca/en_lg /文件夾/ anotherfolder/anotherfolder /頁

注意,的.html在字符串的結尾已被刪除。

這可能與一個替換方法嗎?如果是這樣,我是否也可以將檢查/ en_lg /或/ fr_lg /的事實合併爲一個表達式?

任何幫助將不勝感激!

回答

-1

是的,你可以將這些兩個或也許三替代方法合併成一個使用捕獲組:

window.location.toString().replace(/^http:\/\/.*?\/(en|fr)(.*?)(\.\w+)?$/, 'https://cms.ca/$1_lg$2') 

演示:

var url = "http://www.webby.yay.com/en/folder/anotherfolder/anotherfolder/page.html" 
 
console.log(url.replace(/^http:\/\/.*?\/(en|fr)(.*?)(\.\w+)?$/, 'https://cms.ca/$1_lg$2'))

0

如果沒關係簡單地忽略/ en_lg /和/ fr_lg /:

.replace(/^http:\/\/www.webby.yay.com\/(.*)\.html$/,'https://cms.ca/$1')

如:

"http://www.webby.yay.com/en_lg/folder/anotherfolder/anotherfolder/page.html".replace(/^http:\/\/www.webby.yay.com\/(.*)\.html$/,'https://cms.ca/$1')

"https://cms.ca/en_lg/folder/anotherfolder/anotherfolder/page"

+0

非常感謝你的建議。我應該已經更清楚了,但我想要替換的字符串可以包含各種不同的東西。 例如,我可以獲取像ttp://www.webby.yay.com/en_lg/folder/anotherfolder/anotherfolder/page.html或ttp://whatisthis.com/fr_lg/folder/example/anotherfolder/的URL test.html或ttp://www.iamnotasite.hi.coolstuffbro.com/fr_lg/cool/cool.html。我基本上想要替換http之間的所有內容,直到fr_lg或en_lg,然後在最後刪除html。 – Oaryx

+0

'.replace(/ ^(。*)\ /(en_lg | fr_lg)\ /(。*)\ .html $ /','https://cms.ca/$2/$3')''? – unilynx

相關問題