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

2020/09/30 00:01 · javascript ·  · 0评论

我该怎么做这样的事情:

<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>

您需要添加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>
if (window.location.href.indexOf("franky") != -1)

会做到的。另外,您可以使用regexp:

if (/franky/.test(window.location.href))

您将这样使用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不是字符串,但是有一个toString()方法。因此,您可以这样做:

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

要么

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

旧的Mozilla文档中

位置对象具有toString方法,该方法返回当前URL。您也可以将一个字符串分配给window.location。这意味着您在大多数情况下都可以像对待字符串一样使用window.location。有时,例如,当您需要在其上调用String方法时,必须显式调用toString。

正则表达式的方式:

var matches = !!location.href.match(/franky/); //a boolean value now

或者在简单的语句中,您可以使用:

if (location.href.match(/franky/)) {

我用它来测试网站是在本地运行还是在服务器上运行:

location.href.match(/(192.168|localhost).*:1337/)

这将检查href是否包含192.168localhostAND,然后是:1337

如您所见,当条件变得更加棘手时,使用正则表达式具有优于其他解决方案的优势。

document.URL应该让你的URL

if(document.URL.indexOf("searchtext") != -1) {
    //found
} else {
    //nope
} 

试试这个,它更短,并且可以像这样工作window.location.href

if (document.URL.indexOf("franky") > -1) { ... }

另外,如果您想检查以前的URL:

if (document.referrer.indexOf("franky") > -1) { ... }

更容易得到

<script type="text/javascript">
$(document).ready(function () {
    var url = window.location.href;
    if(url.includes('franky'))    //includes() method determines whether a string contains specified string.
    {
         alert("url contains franky");
    }
});
</script>

尝试这个:

<script type="text/javascript">             
    $(document).ready
    (
        function () 
        { 
            var regExp = /franky/g;
            var testString = "something.com/frankyssssddsdfjsdflk?franky";//Inyour case it would be window.location;
            if(regExp.test(testString)) // This doesn't work, any suggestions.                 
            {                      
                alert("your url contains the name franky");                 
            }             
        }
    );         
</script> 

试试indexOf

if (foo.indexOf("franky") >= 0)
{
  ...
}

您也可以尝试搜索(用于正则表达式)

if (foo.search("franky") >= 0)
{
  ...
}

使用Window.location.href在javascript中获取网址。该属性将告诉您浏览器的当前URL位置。将属性设置为其他内容将重定向页面。

if (window.location.href.indexOf('franky') > -1) {
     alert("your url contains the name franky");
}

我喜欢创建一个boolean,然后在逻辑上使用它if

//kick unvalidated users to the login page
var onLoginPage = (window.location.href.indexOf("login") > -1);

if (!onLoginPage) {
  console.log('redirected to login page');
  window.location = "/login";
} else {
  console.log('already on the login page');
}

放入您的js文件

                var url = window.location.href;
                console.log(url);
                console.log(~url.indexOf("#product-consulation"));
                if (~url.indexOf("#product-consulation")) {
                    console.log('YES');
                    // $('html, body').animate({
                    //     scrollTop: $('#header').offset().top - 80
                    // }, 1000);
                } else {
                    console.log('NOPE');
                }

由于单词边界\b或类似的设备,正则表达式对于很多人来说将是最佳的当任何的发生字边界0-9a-zA-Z_是在该侧的下一个匹配的,或当一个字母数字字符所连接到线或字符串末尾或开头。

if (location.href.match(/(?:\b|_)franky(?:\b|_)))

如果您使用if(window.location.href.indexOf("sam"),您将获得flotsam和的匹配项same,等等。tom不用正则表达式就可以匹配番茄和明天。

使其区分大小写就像删除一样简单i

此外,添加其他过滤器就像

if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))

让我们来谈谈(?:\b|_)RegEx通常定义_为a,word character因此不会引起单词边界。我们用它(?:\b|_)来处理这个。要看到,无论其在认定\b_弦上的两侧。

其他语言可能需要使用类似

if (location.href.match(/([^\wxxx]|^)(?:franky|bob|billy|john|steve)([^\wxxx]|$)/i))
//where xxx is a character representation (range or literal) of your language's alphanumeric characters.

所有这一切都比说容易

var x = location.href // just used to shorten the code
x.indexOf("-sam-") || x.indexOf("-sam.") || x.indexOf(" sam,") || x.indexOf("/sam")...
// and other comparisons to see if the url ends with it 
// more for other filters like frank and billy

其他语言支持正则表达式,\p{L}而javascript不支持,这会使检测外来字符的任务变得更加容易。就像是[^\p{L}](filters|in|any|alphabet)[^\p{L}]

如果将字符串转换为小写或大写,这是一个好习惯,因为indexof()方法区分大小写。

如果您的搜索不区分大小写,则可以只使用indexOf()方法,而无需将原始字符串转换为小写或大写:

var string= location.href;
var convertedString= string.toLowerCase();

if(convertedString.indexOf('franky') != -1)
{
    alert("url has franky");
}
else
{
    alert("url has no franky");
}

假设您有这个脚本

<div>
  <p id="response"><p>
  <script>
    var query = document.location.href.substring(document.location.href.indexOf("?") + 1);
    var text_input = query.split("&")[0].split("=")[1];
    document.getElementById('response').innerHTML=text_input;
  </script> </div>

网址格式是 www.localhost.com/web_form_response.html?text_input=stack&over=flow

写入的文字<p id="response">将是stack

本文地址:http://javascript.askforanswer.com/ruhejianchaurlshifoubaohangeidingdezifuchuan.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!