JQuery проверяет и удаляет косую черту в конце прочитанного URL - PullRequest
10 голосов
/ 19 января 2011

В скрипте jQuery у меня есть строка кода, которая получает строку текущего URL:

var target = $(this).attr('href');

Может ли код в этом скрипте проверить наличие косой черты в конце строки URL. Если он присутствует, то удалите его? Какой способ сделать это, вы могли бы порекомендовать?

Ответы [ 4 ]

22 голосов
/ 19 января 2011

Я бы сделал это:

 target = target.replace(/\/$/, '');

Теперь, если вам нужно беспокоиться о наличии строки запроса:

 <a href='http://foo.bar.com/something/?param=xyz'>hi</a>

, тогда все становится немного сложнее.Синтаксический анализ URL с помощью регулярных выражений, возможно, возможен, но он довольно грязный.Если вам это сойдет с рук, сузьте возможности того, как могут выглядеть ваши URL, чтобы вам не приходилось использовать какой-то большой "официальный" шаблон.

4 голосов
/ 19 января 2011

Это должно быть безопасно и для URL со строками запроса, И в нем не используется регулярное выражение ....

var urlEnd = target.indexOf("?");
if(urlEnd == -1){
    urlEnd = target.length;
}

// Don't bother doing anything if the URL is empty
if (urlEnd > 0){
    if (target[urlEnd - 1] == "/"){
        $(this).attr('href', target.substr(0, urlEnd-1) + target.substr(urlEnd));
    }    
}
2 голосов
/ 19 января 2011

Предполагая, что вы имеете в виду косую черту, одним из возможных решений будет:

var l = target.length - 1;
if(target.lastIndexOf('/') === l) {
    target = target.substring(0, l);
}
0 голосов
/ 06 января 2017

Вы можете сделать это с помощью регулярного выражения, например:

target.replace (// + ((\? | #). *)? $ /, '$ 1');

Который должен сохранять строки запроса или фрагменты URL в конце URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...