У меня есть эти строки в javascript:
/banking/bonifici/italia
/banking/bonifici/italia/
и я хотел бы удалить первую и последнюю косую черту, если она существует.
Я пробовал, ^\/(.+)\/?$
но не получается.
Прочитав пост в stackoverflow, я обнаружил, что php имеет функцию обрезки, и я мог бы использовать его перевод javascript ( http://phpjs.org/functions/trim : 566), но я бы предпочел «простое» регулярное выражение.
javascript
regex
CorPao
источник
источник
Ответы:
return theString.replace(/^\/|\/$/g, '');
«Замените все (
/.../g
) ведущую косую черту (^\/
) или (|
) конечную косую черту (\/$
) пустой строкой».источник
//www.google.com
?//
будет пропущен./^\s*\/*\s*|\s*\/*\s*$/gm
он позаботится о некоторых возможных пробелах до и после косой черты и нескольких косыхЗдесь нет реальной причины использовать регулярное выражение, строковые функции будут работать нормально:
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 .
Рекомендации:
String.substr
String.charAt
источник
В случае, если использование 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()
функция может реализовать более сложную логику, чем просто фильтрация пустых строк (что является поведением по умолчанию).Слово предупреждения - это не так быстро, как другие фрагменты здесь.
источник
На всякий случай, что кому-то тут нужна преждевременная оптимизация ...
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)
источник
theString.replace(/^\/|\/$/g, '')
она действительно проста и понятна для людей, читающих код, но, вероятно, медленнее, чем эта!