簡體   English   中英

Javascript 正則表達式:刪除第一個和最后一個斜杠

[英]Javascript regular expression: remove first and last slash

我在 javascript 中有這些字符串:

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

如果它存在,我想刪除第一個和最后一個斜杠。

我試過^\/(.+)\/?$但它不起作用。

Reading some post in stackoverflow I found that php has trim function and I could use his javascript translation ( http://phpjs.org/functions/trim :566) but I would prefer a "simple" regular expression.

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

“用空字符串替換所有( /.../g )前斜杠( ^\\/ )或( | )后斜杠( \\/$ )。”

沒有真正的理由在這里使用正則表達式,字符串函數可以正常工作:

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

jsFiddle上查看此操作。

參考文獻:

如果不是使用RegExp,或者在使用URL(例如,雙/三斜杠或沒有復雜替換的空行)或使用其他處理時不得不處理一些極端情況,這雖然不那么明顯,但功能更多-樣式解決方案:

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

在此代碼段中, filter()函數可以實現比僅過濾空字符串(這是默認行為)更復雜的邏輯。

警告詞-這不像這里的其他摘要那么快。

一個班輪,沒有正則表達式,處理多次出現

const trimSlashes = str => str.split('/').filter(v => v !== '').join('/');

console.log(trimSlashes('/some/path/foo/bar///')); // "some/path/foo/bar"

萬一有人在這里需要過早的優化 ...

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)

你可以檢查 str.startsWith 和 str.endsWith 然后 substr 如果存在

  var str= "/aaa/bbb/";
  var str= str.startsWith('/') ? str.substr(1) : str;
  var str= str.endsWith('/') ? str.substr(0,str.length - 1) : str;

或者您可以編寫自定義 function

trimSlashes('/aaa/bbb/');

function trimSlashes(str){
  str= str.startsWith('/') ? str.substr(1) : str;
  str= str.endsWith('/') ? str.substr(0,str.length - 1) : str;
  return str;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM