javascript/jquery将尾部斜杠添加到url(如果不存在)

jac*_*rdy 38 javascript validation jquery

我正在创建一个小型Web应用程序,用户在其中输入一个服务器URL,从中通过AJAX请求提取数据负载.

由于用户必须手动输入URL,因此人们通常会忘记尾部斜杠,即使它是必需的(因为某些数据会附加到输入的URL中).我需要一种方法来检查是否存在斜杠,如果没有,则添加它.

这似乎是一个问题,jQuery会有一个单行,有谁知道如何做到这一点,还是我应该为它编写JS函数?

Man*_*yas 104

var lastChar = url.substr(-1); // Selects the last character
if (lastChar != '/') {         // If the last character is not a slash
   url = url + '/';            // Append a slash to it.
}
Run Code Online (Sandbox Code Playgroud)

临时变量名可以省略,并直接嵌入到断言中:

if (url.substr(-1) != '/') url += '/';
Run Code Online (Sandbox Code Playgroud)

由于目标是使用单行更改URL,因此还可以使用以下解决方案:

url = url.replace(/\/?$/, '/');
Run Code Online (Sandbox Code Playgroud)
  • 如果存在尾部斜杠,则将其替换为/.
  • 如果尾部斜杠不存在,/则将a 附加到末尾(确切地说:将替换尾随锚/).


Gra*_*ton 32

url += url.endsWith("/") ? "" : "/"
Run Code Online (Sandbox Code Playgroud)


bne*_*bne 11

我添加到正则表达式解决方案以适应查询字符串:

http://jsfiddle.net/hRheW/8/

url.replace(/\/?(\?|#|$)/, '/$1')
Run Code Online (Sandbox Code Playgroud)


Cha*_*son 6

这也有效:

url = url.replace(/\/$|$/, '/');
Run Code Online (Sandbox Code Playgroud)

例子:

let urlWithoutSlash = 'https://www.example.com/path';
urlWithoutSlash = urlWithoutSlash.replace(/\/$|$/, '/');
console.log(urlWithoutSlash);

let urlWithSlash = 'https://www.example.com/path/';
urlWithSlash = urlWithoutSlash.replace(/\/$|$/, '/');
console.log(urlWithSlash);
Run Code Online (Sandbox Code Playgroud)

输出:

https://www.example.com/path/
https://www.example.com/path/
Run Code Online (Sandbox Code Playgroud)

它用尾部斜线替换尾部斜线或无尾部斜线。因此,如果存在斜线,则将其替换为 1(基本上将其保留在那里);如果不存在,则添加尾部斜杠。


Ari*_*rik 6

这个URL类非常棒 - 它帮助我们更改路径并处理查询参数和片段标识符

function addTrailingSlash(u) {
    const url = new URL(u);
    url.pathname += url.pathname.endsWith("/") ? "" : "/";
    return url.toString();
}

addTrailingSlash('http://example.com/slug?page=2');
// result: "http://example.com/slug/?page=2"
Run Code Online (Sandbox Code Playgroud)

您可以URLMDN上阅读更多相关内容