Javascript 如果需要,可以使用正则表达式在字符串中添加前导斜杠和尾随斜杠
我遇到了一个问题,如果字符串中没有前导斜杠和尾随斜杠,我需要将它们添加到字符串中,或者如果字符串中已经有斜杠,则什么也不做 例如:Javascript 如果需要,可以使用正则表达式在字符串中添加前导斜杠和尾随斜杠,javascript,regex,Javascript,Regex,我遇到了一个问题,如果字符串中没有前导斜杠和尾随斜杠,我需要将它们添加到字符串中,或者如果字符串中已经有斜杠,则什么也不做 例如: "/path" => "/path/" "path/" => "/path/" "path" => "/path/" "/path/" => "/path/" "/" => "/" "" => "/" 我尝试使用此正则表达式,但它没有添加尾随斜杠: '/path'.replace(/(^\/?)|(\/?$)/, '/
"/path" => "/path/"
"path/" => "/path/"
"path" => "/path/"
"/path/" => "/path/"
"/" => "/"
"" => "/"
我尝试使用此正则表达式,但它没有添加尾随斜杠:
'/path'.replace(/(^\/?)|(\/?$)/, '/'); // output is "/path"
[感谢Dmitry!] 这将适用于您的前5个案例:
string.replace(/^\/?([^\/]+(?:\/[^\/]+)*)\/?$/, '/$1/');
然后剩下空字符串,您可以使用OR运算符(|
)处理该字符串:
片段:
var RE=/^\/?([^\/]+(?:\/[^\/]+)*)\/?$/;
log('/path'.replace(RE'/$1/')| |'/');
log('path/'.replace(RE,'/$1/'))| |'/');
log('path'.replace(RE,'/$1/'))| |'/');
console.log(“/path/”.replace(RE“/$1/”)| |“/”);
console.log(“/”.replace(RE“/$1/”)| |“/”);
console.log(“”.replace(RE,“/$1/”)| |“/”);
log('path/with/embedded/slashes.replace(RE,“/$1/”)| |“/”)代码>[感谢Dmitry!]
这将适用于您的前5个案例:
string.replace(/^\/?([^\/]+(?:\/[^\/]+)*)\/?$/, '/$1/');
然后剩下空字符串,您可以使用OR运算符(|
)处理该字符串:
片段:
var RE=/^\/?([^\/]+(?:\/[^\/]+)*)\/?$/;
log('/path'.replace(RE'/$1/')| |'/');
log('path/'.replace(RE,'/$1/'))| |'/');
log('path'.replace(RE,'/$1/'))| |'/');
console.log(“/path/”.replace(RE“/$1/”)| |“/”);
console.log(“/”.replace(RE“/$1/”)| |“/”);
console.log(“”.replace(RE,“/$1/”)| |“/”);
log('path/with/embedded/slashes.replace(RE,“/$1/”)| |“/”)代码>也许,<代码>路径<代码>在中间也应该有可选的斜线。在这种情况下(例如,some/longer/path
),建议的解决方案将失败。这是一个很好的观点。如果情况是这样,OP必须做出响应。然而,你的解决方案可以扩展到覆盖这些情况。现在,我的解决方案是:“路径”。替换(/^\/?([^\/]+)\/?$/,“/$1/”)代码>。它将为空的单斜杠输入字符串返回双斜杠。这种情况可以通过简单的条件解决。但是有一点hacky@DmitryEgorov太棒了。现在更新了,但是如果你想把它贴在信用卡上,我会删除我的答案。也许,<代码>路径<代码>在中间也应该有可选的斜线。在这种情况下(例如,some/longer/path
),建议的解决方案将失败。这是一个很好的观点。如果情况是这样,OP必须做出响应。然而,你的解决方案可以扩展到覆盖这些情况。现在,我的解决方案是:“路径”。替换(/^\/?([^\/]+)\/?$/,“/$1/”)代码>。它将为空的单斜杠输入字符串返回双斜杠。这种情况可以通过简单的条件解决。但是有一点hacky@DmitryEgorov太棒了。现在已经更新了,但是如果你想自己发布,我会删除我的答案。看看。看看。