我遇到一个问题,如果字符串没有斜杠,我需要添加前导斜杠和尾随斜杠,或者如果字符串已经有斜杠,则不执行任何操作。
例如:
"/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/