2017-07-24 6 views
0

J'essaie de créer un bookmarklet qui me permettra de manipuler certaines URL afin de basculer rapidement entre les vues d'édition de contenu et la production dans un nouveau CMS.Comment remplacer une chaîne entre deux et supprimer les 5 derniers caractères avec regex

Actuellement, je peux remplacer la chaîne de mendicité de l'URL par la version CMS, ce qui est génial. Cependant, je dois aussi pouvoir enlever le ".html" à la fin de la chaîne, qui est ce que je suis aux prises avec.

ce que je viens

Voici mon bookmarklet actuel:

<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> 

Avec le bookmarklet ci-dessus, je peux faire ce qui suit (j'ai enlevé le « h » à l'avant, car ils « re pas de liens réels).

CHANGEMENT CE:

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

À CE:

  • TTPs: //cms.ca/en_lg/folder /anotherfolder/anotherfolder/page.html

QU'EST-CE QUE JE VEUX FAIRE

CHANGEMENT CE:

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

À CE:

  • TTPs: //cms.ca/en_lg/dossier/anotherfolder/anotherfolder/Page

Notez que le .html à la fin de la chaîne a été supprimée. Est-ce possible avec une méthode de remplacement?

Si oui, pourrais-je aussi combiner le fait que je vérifie pour/fr_lg/ou/fr_lg/dans une expression?

Toute aide serait grandement appréciée!

Répondre

-1

Oui, vous pouvez fusionner ces deux ou peut-être trois remplacer les méthodes dans un en utilisant des groupes de capture:

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

Demo: vous

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

S'il est correct de simplement ignorer/en_lg/et/fr_lg /:

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

par exemple:

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

donne

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

+0

Merci beaucoup pour votre suggestion. J'aurais dû être plus clair, mais la chaîne que j'essaie de remplacer peut varier d'une variété de choses. Par exemple, je pourrais obtenir une URL comme ttp: //www.webby.yay.com/en_lg/folder/anotherfolder/anotherfolder/page.html ou ttp: //whatisthis.com/fr_lg/folder/example/anotherfolder/ test.html ou ttp: //www.iamnotasite.hi.coolstuffbro.com/fr_lg/cool/cool.html. Je veux fondamentalement remplacer tout entre http jusqu'à fr_lg ou en_lg et puis enlever le html à la fin. – Oaryx

+0

Que diriez-vous de '.replace (/^(. *) \/(En_lg | fr_lg) \/(. *) \ .html $ /, 'https: //cms.ca/$2/$3')'? – unilynx