javascript - 如果需要,使用正则表达式向字符串添加前导斜杠和尾随斜杠

标签 javascript regex

我遇到一个问题,如果字符串没有斜杠,我需要添加前导斜杠和尾随斜杠,或者如果字符串已经有斜杠,则不执行任何操作。

例如:

"/path" => "/path/"

"path/" => "/path/"

"path" => "/path/"

"/path/" => "/path/"

"/" => "/"

"" => "/"

我尝试使用此正则表达式,但它没有添加尾部斜杠:

'/path'.replace(/(^\/?)|(\/?$)/, '/'); // output is "/path"

最佳答案

[感谢德米特里!]

这适用于您的前 5 个案例:

string.replace(/^\/?([^\/]+(?:\/[^\/]+)*)\/?$/, '/$1/');

然后留下空字符串,您可以使用 OR 运算符 (||) 处理该字符串:

string.replace(/^\/?([^\/]+(?:\/[^\/]+)*)\/?$/, '/$1/') || '/';

片段:

var RE = /^\/?([^\/]+(?:\/[^\/]+)*)\/?$/;

console.log('/path'.replace(RE, '/$1/') || '/');
console.log('path/'.replace(RE, '/$1/') || '/');
console.log('path'.replace(RE, '/$1/') || '/');
console.log('/path/'.replace(RE, '/$1/') || '/');
console.log('/'.replace(RE, '/$1/') || '/');
console.log(''.replace(RE, '/$1/') || '/');
console.log('path/with/embedded/slashes'.replace(RE, '/$1/') || '/');

关于javascript - 如果需要,使用正则表达式向字符串添加前导斜杠和尾随斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43836091/

相关文章:

javascript - Shake FilePatterns 如何用于缩小 JS 和 CSS 文件?

regex - 如何在 AWK 中用大括号包围所有空格填充的单词?

javascript - 返回字符串中每个单词的第一个字符

regex - sed 查找并用空格替换字符串

c# - 正则表达式行尾和字符串终止符!

javascript - 将 JWPlayer 5 转换为 JWPlayer 6 flash(flv) 和 HTML(mp4) 格式的视频

javascript - 将 Mozila Pdf.js 与 Meteor 集成

javascript - JavaScript 的堆叠 DIV 点击事件

javascript - 充满物体的物体的长度?

javascript - 正则表达式无法正确识别 IE 版本