如何检查 URL 是否包含给定的字符串?

IT技术 javascript jquery url
2021-01-20 10:46:05

我怎么能做这样的事情:

<script type="text/javascript">
$(document).ready(function () {
    if(window.location.contains("franky")) // This doesn't work, any suggestions?
    {
         alert("your url contains the name franky");
    }
});
</script>
6个回答

您需要添加 href 属性并检查indexOf而不是contains

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
  $(document).ready(function() {
    if (window.location.href.indexOf("franky") > -1) {
      alert("your url contains the name franky");
    }
  });
</script>

我有一个值数组,想查看 Url 是否有任何值,并为我提供与条件匹配的数组索引。我怎么做?谢谢。
2021-03-24 10:46:05
@Vennsoh您无法找到“买车”,因为您需要查看window.location.hashnot window.location.href只需在 OP 的函数中交换这些值。
2021-04-02 10:46:05
我有一个像这样的长 URL,preview.tbwabox.co.nz/_v005/index.html# buying-a-car 我想检查字符串是否有“buying-a-car 但脚本”不起作用?
2021-04-04 10:46:05
@JW 为什么`>-1` 不能使用`>0`?
2021-04-11 10:46:05
@Elshan 因为,严格来说,如果以“franky”开头,则.href.indexOf("franky") 可以返回 0 值.href当然,在这种情况下,它永远不会像.href往常一样以协议开头,通常是“http:”或“file:”。尽管如此,在与indexOf().
2021-04-12 10:46:05
if (window.location.href.indexOf("franky") != -1)

会做的。或者,您可以使用正则表达式:

if (/franky/.test(window.location.href))
但是,如果我使用正则表达式,则没有人能够阅读它;)
2021-03-15 10:46:05
两个选项之间的优缺点将是对这个答案的一个很好的补充。
2021-04-12 10:46:05

你会indexOf像这样使用

if(window.location.href.indexOf("franky") != -1){....}

还要注意href字符串的添加,否则你会这样做:

if(window.location.toString().indexOf("franky") != -1){....}

像这样:

    <script type="text/javascript">
        $(document).ready(function () {
            if(window.location.href.indexOf("cart") > -1) 
            {
                 alert("your url contains the name franky");
            }
        });
    </script>
调用 window.location.indexOf 和 window.location.href.indexOf 有什么区别?
2021-03-24 10:46:05
@starsplusplus 没有任何区别。window.location.hrefdeveloper.mozilla.org/en-US/docs/Web/API/Window.location的别名window.location
2021-04-01 10:46:05
@VinothNarayan 您可以简单地向if语句添加另一个条件为了确保它同时具有,您可以使用&&Javascript 中的 AND 运算符if( window.location.href.indexOf("cart") > -1 && window.location.href.indexOf("box") > -1 ) 要检查它是否具有一个值或另一个值,请使用 OR 运算符,它是两个管道字符|| if( window.location.href.indexOf("cart") > -1 || window.location.href.indexOf("box") > -1 )
2021-04-05 10:46:05
上面的一个对我来说很好,但是对于两个变量如何检查它包含两个值
2021-04-11 10:46:05

window.location不是字符串,但它有一个toString()方法。所以你可以这样做:

(''+window.location).includes("franky")

或者

window.location.toString().includes("franky")

来自旧的 Mozilla 文档

Location 对象有一个返回当前 URL 的 toString 方法。您还可以为 window.location 分配一个字符串。这意味着在大多数情况下,您可以将 window.location 视为字符串。有时,例如当您需要对其调用 String 方法时,您必须显式调用 toString。

在 Firefox 48 中,String.prototype.contains() 已被删除。仅使用 String.prototype.includes()。看这里
2021-03-14 10:46:05
@CaseyC 改变了。谢谢!
2021-04-06 10:46:05