Expression régulière Javascript: supprimer la première et la dernière barre oblique

J’ai ces chaînes en javascript:

/banking/bonifici/italia /banking/bonifici/italia/ 

et je voudrais supprimer le premier et le dernier slash s’il existe.

J’ai essayé ^\/(.+)\/?$ Mais ça ne marche pas.

Lecture de certains articles dans stackoverflow J’ai trouvé que php avait une fonction de compression et que je pouvais utiliser sa traduction javascript ( http://phpjs.org/functions/sortingm : 566) mais je préférerais une expression régulière “simple”.

 return theSsortingng.replace(/^\/|\/$/g, ''); 

“Remplacez toutes les /.../g ( ^\/ ) ou ( | ) par une chaîne vide ( /.../g ).”

Il n’y a pas vraiment de raison d’utiliser une expression rationnelle ici, les fonctions de chaîne fonctionneront bien:

 var ssortingng = "/banking/bonifici/italia/"; if (ssortingng.charAt(0) == "/") ssortingng = ssortingng.substr(1); if (ssortingng.charAt(ssortingng.length - 1) == "/") ssortingng = ssortingng.substr(0, ssortingng.length - 1); // ssortingng => "banking/bonifici/italia" 

Voir ceci en action sur jsFiddle .

Les références:

  • Ssortingng.substr
  • Ssortingng.charAt

Juste au cas où quelqu’un aurait besoin d’une optimisation prématurée ici …

http://jsperf.com/remove-leading-and-trailing-slashes/5

 var path = '///foo/is/not/equal/to/bar///' var count = path.length - 1 var index = 0 while (path.charCodeAt(index) === 47 && ++index); while (path.charCodeAt(count) === 47 && --count); path = path.slice(index, count + 1) 

Si l’utilisation de RegExp n’est pas une option , ou si vous devez gérer des cas en coin lorsque vous travaillez avec des URL (telles que des barres obliques doubles / sortingples ou des lignes vides sans remplacement complexe), utilisez un traitement supplémentaire. solution de style:

 const urls = [ '//some/link///to/the/resource/', '/root', '/something/else', ]; const sortingmmedUrls = urls.map(url => url.split('/').filter(x => x).join('/')); console.log(sortingmmedUrls);