web-dev-qa-db-ja.com

URLに特定の文字列が含まれているかどうかを確認する方法

どうすればこのようなことができますか。

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

Hrefプロパティを追加し、indexOfの代わりにcontainsをチェックする必要があります。

<script type="text/javascript">
$(document).ready(function () {
    if(window.location.href.indexOf("franky") > -1) {
       alert("your url contains the name franky");
    }
});
</script>
573
J.W.
if (window.location.href.indexOf("franky") != -1)

それをするでしょう。あるいは、正規表現を使うこともできます。

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

そのようです:

    <script type="text/javascript">
        $(document).ready(function () {
            if(window.location.href.indexOf("cart") > -1) 
            {
                 alert("your url contains the name franky");
            }
        });
    </script>
21
Adrian Gonzales

このように indexOf を使用します。

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

文字列にhrefが追加されていることにも注意してください。

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

window.location はStringではありませんが、toString()メソッドを持ちます。だからあなたはこのようにすることができます:

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

または

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

古いMozillaのドキュメントから

Locationオブジェクトには、現在のURLを返すtoStringメソッドがあります。 window.locationに文字列を代入することもできます。これは、ほとんどの場合それが文字列であるかのようにwindow.locationを操作できることを意味します。ときには、たとえばStringメソッドを呼び出す必要があるときなど、明示的にtoStringを呼び出す必要があります。

10
Alin Purcaru

正規表現の方法:

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

あるいは簡単なステートメントであなたは使うことができます:

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

これを使って、Webサイトがローカルで動作しているのか、サーバーで動作しているのかをテストします。

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

これは、 href 192.168またはlocalhost ANDが含まれているかどうかを確認し、その後に:1337が続くかどうかを確認します。

ご覧のとおり、条件が少し複雑になる場合は、正規表現を使用すると他のソリューションよりも有利になります。

8

これを試してください、それはより短く、window.location.hrefとまったく同じように機能します。

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

あなたが以前のURLをチェックしたい場合も:

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

document.URLはあなたにURLを与えるべきです

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

これを試して:

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

IndexOfを試す

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

検索を試すこともできます(正規表現用)

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

より簡単に

<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>
3
Vishnu Dev

私は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');
}
2
Ron Royston

JavascriptでURLを取得するには、Window.location.hrefを使用してください。これはブラウザの現在のURLの場所を教えてくれるプロパティです。プロパティを別のものに設定すると、ページがリダイレクトされます。

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

あなたの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');
                }
1
alemac852

正規表現は、Wordの境界\bまたは同様のデバイスのため、多くの人にとってより最適なものになるでしょう。 0-9a-zA-Z_のいずれかが その側 の次の一致の場合、または英数字が行またはストリングの最後または先頭に接続されている場合は、ワード境界が発生します。

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

if(window.location.href.indexOf("sam")を使うと、とりわけflotsamsameにマッチします。 tomは、正規表現なしで、トマトと明日に一致します。

大文字と小文字を区別するのはiを削除するのと同じくらい簡単です。

さらに、他のフィルタを追加するのと同じくらい簡単です。

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

(?:\b|_)について話しましょう。通常、RegExは_Word characterとして定義しているため、Wordの境界は発生しません。これに対処するためにこの(?:\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}]のようなもの

1
Regular Joe

このスクリプトがあるとします。

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

URLの形式はwww.localhost.com/web_form_response.html?text_input=stack&over=flowです。

<p id="response">に書かれたテキストはstackになります

0
Dhiraj Himani