Javascript - 如何使用.indexOf而不仅仅是开头查找特定字符串

时间:2015-03-12 01:13:27

标签: javascript string indexof

如果在用户网址中找到字符串,我试图运行一些代码。但是,如果字符串后面没有其他内容,我只希望它运行。该字符串显示在URL的末尾,如下所示。

http://shop.com/?searchTerm=bread

我的代码:

if (window.location.search.indexOf('searchTerm=bread') > -1) {
do stuff;
}

这很好用,但问题是如果字符串是' searchTerm = bread + rolls'它仍会运行我不希望这种情况发生。有什么想法吗?

我还应该提到URL中有一堆其他参数会发生变化,但我试图定位的那个参数总是在最后。我也无法使用任何库。

http://shop.com/?p=kjsl&g=sdmjkl&searchTerm=bread

2 个答案:

答案 0 :(得分:0)

您可以使用以下示例:

var url = window.location.search;
if (/searchTerm=bread$/.test(url)) {
    do stuff;
}
else if (/searchTerm=cheese\+slices$/.test(url)) {
    do stuff;
}

$代表行尾。 \反斜杠用于转义特殊字符,如+

希望这有帮助:)

答案 1 :(得分:0)

你想要String.prototype.endsWith。见MDN docs。该页面还提供了polyfill。有关可用性,请参阅caniuse

但是,在Chrome 41中,这种原生实现比使用slice的最快替代方案慢25%:

function endsWithSlice(string1, string2) {
  return string1.slice(-string2.length) === string2;
}

另一个答案中提出的正则表达式解决方案慢了50%。 MDN polyfill慢了38%,但仍然比regexp快。请参阅jsperf