我遇到一个问题,如果字符串没有斜杠,我需要添加前导斜杠和尾随斜杠,或者如果字符串已经有斜杠,则不执行任何操作。
例如:
"/path" => "/path/"
"path/" => "/path/"
"path" => "/path/"
"/path/" => "/path/"
"/" => "/"
"" => "/"
Run Code Online (Sandbox Code Playgroud)
我尝试使用这个正则表达式,但它没有添加尾部斜杠:
'/path'.replace(/(^\/?)|(\/?$)/, '/'); // output is "/path"
Run Code Online (Sandbox Code Playgroud)
[感谢德米特里!]
这适用于您的前 5 个案例:
string.replace(/^\/?([^\/]+(?:\/[^\/]+)*)\/?$/, '/$1/');
Run Code Online (Sandbox Code Playgroud)
然后,您将得到空字符串,您可以使用 OR 运算符 ( ||) 来处理该字符串:
string.replace(/^\/?([^\/]+(?:\/[^\/]+)*)\/?$/, '/$1/') || '/';
Run Code Online (Sandbox Code Playgroud)
片段:
string.replace(/^\/?([^\/]+(?:\/[^\/]+)*)\/?$/, '/$1/');
Run Code Online (Sandbox Code Playgroud)