यदि URL में एक स्ट्रिंग दी गई है तो कैसे जांचें?


361

मैं ऐसा कुछ कैसे कर सकता हूं:

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

"window.location.contains is not a function"
जीन b।

जवाबों:


656

आपको indexOfइसके बजाय href प्रॉपर्टी और चेक की आवश्यकता है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>


3
मैं इस, तरह एक लंबे URL होना preview.tbwabox.co.nz/_v005/index.html#buying-a-car और मैं अगर स्ट्रिंग "खरीद पर कार लेकिन स्क्रिप्ट" है जाँच करना चाहते हैं काम नहीं कर रहा ?
वेनसो जूल

6
@Vennsoh आप "खरीद पर कार" लगता है क्योंकि आप में देखने की जरूरत है नहीं कर पा रहे window.location.hashनहीं window.location.href। बस उन मूल्यों को ओपी के कार्य में स्वैप करें।
एड्रियन गोंजालेस

1
@JW Why`> -1` क्या हम `> 0` का उपयोग नहीं कर सकते?
एलशान

5
@ ईशान क्योंकि, सख्ती से बोलना, .href.indexOf("franky") 0 का मान लौटा सकता है यदि .href"फ्रेंकी" से शुरू होता है। बेशक, इस मामले में, यह .hrefहमेशा प्रोटोकॉल के साथ शुरू नहीं होता है, आमतौर पर "http:" या "फ़ाइल:"। इसके बावजूद, आपको ALWAYS का उपयोग करना चाहिए - -1,> = 0 या, मेरी वरीयता; == - 1 जब परिणाम के साथ तुलना की जाती है indexOf()
रोबिनटेकस

मेरे पास एक मूल्य है और यह देखना चाहता हूं कि क्या उरल का कोई मूल्य है और मुझे उस शर्त का मिलान करता है जो शर्त से मेल खाता है। मैं उसको कैसे करू? धन्यवाद।
Si8

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

कर लेती। वैकल्पिक रूप से, आप एक regexp का उपयोग कर सकते हैं:

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

4
दो विकल्पों के बीच एक पक्ष / विपक्ष इस उत्तर के लिए एक अच्छा अतिरिक्त होगा।
क्रिस

लेकिन अगर मैं एक regex अभिव्यक्ति का उपयोग करता हूं तो कोई भी इसे पढ़ने में सक्षम नहीं होगा;)
RayLoveless

26

आप indexOfइस तरह का उपयोग करेंगे :

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

इसके अलावा hrefस्ट्रिंग के लिए इसके अलावा पर ध्यान दें अन्यथा आप ऐसा करेंगे:

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

23

इस तरह:

    <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 के बीच क्या अंतर है?
स्टारप्लस

@starsplusplus कोई अंतर नहीं है। developer.mozilla.org/en-US/docs/Web/API/Window.locationwindow.location.href का एक अन्य नाम हैwindow.location
एड्रियन गोंजालेस

उपरोक्त मेरे लिए ठीक काम करता है, लेकिन दो चर के लिए कैसे इसकी जाँच करने के लिए दोनों मान शामिल हैं
विनोथ नारायण

1
@VinothNarayan आप केवल ifकथन में एक और शर्त जोड़ सकते हैं । यह सुनिश्चित करने के लिए कि आपके पास दोनों हैं, आप 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 )
Adrian Gonzales

19

window.locationस्ट्रिंग नहीं है, लेकिन इसकी एक toString()विधि है। तो आप इसे इस तरह से कर सकते हैं:

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

या

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

से पुराने मोज़िला डॉक्स :

स्थान ऑब्जेक्ट में वर्तमान URL को लौटाने वाली एक toString विधि होती है। आप window.location को एक स्ट्रिंग भी असाइन कर सकते हैं। इसका मतलब है कि आप window.location के साथ काम कर सकते हैं जैसे कि यह ज्यादातर मामलों में एक स्ट्रिंग था। कभी-कभी, उदाहरण के लिए जब आपको उस पर स्ट्रिंग विधि को कॉल करने की आवश्यकता होती है, तो आपको स्पष्ट रूप से स्ट्रिंग पर कॉल करना होगा।


2
फ़ायरफ़ॉक्स 48 में, String.prototype.contains () को हटा दिया गया है। केवल String.prototype.includes () का उपयोग करें। यहां देखें
केसीसी

@ कैसी बदल गई। धन्यवाद!
एलिन पुरकारू

9

रेगेक्स रास्ता:

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

या एक साधारण बयान में आप उपयोग कर सकते हैं:

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

मैं यह परीक्षण करने के लिए उपयोग करता हूं कि वेबसाइट स्थानीय रूप से चल रही है या सर्वर पर:

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

यह जाँच करता है कि href या तो होता है 192.168या localhostऔर द्वारा पीछा किया जाता :1337

जैसा कि आप देख सकते हैं, जब हालत थोड़ा पेचीदा हो जाता है, तो रेगेक्स का उपयोग अन्य समाधानों पर इसके फायदे हैं।


अच्छा लगा। मैंने अगर (window.parent.location.href.match (/ \ /?)) {Window.parent.location = window.parent.location.pathname; } और यह बहुत अच्छी तरह से काम करता है ...
तारिक

वैकल्पिक रूप से, मुझे लगता है कि if(/franky/.test(location.href)) { /* regex matched */ }अगर मैं मैचों के साथ कुछ नहीं कर रहा हूं तो इसका उपयोग करना मेरे लिए थोड़ा अधिक संक्षिप्त है ।
18:00 पर cchamberlain

हाँ, इस मामले में testनिश्चित रूप से क्लीनर है match
Stephan Bijzitter

6

document.URLआपको मिलना चाहिए URLऔर

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

6

इसे आज़माएं, यह छोटा है और ठीक वैसे ही काम करता है window.location.href:

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

अगर आप पिछले URL की जाँच करना चाहते हैं:

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

@ सिक्सस्टारप्रो मैंने डाउनवोट नहीं किया, लेकिन, ओह, मुझे नहीं पता, शायद स्पष्ट रूप से क्योंकि आपने एक ही जवाब दिया था क्योंकि यह 18 महीने पहले पोस्ट किया गया था! इसके अलावा, इस बारे में अतिरिक्त जानकारी document.referrerपूरी तरह से सवाल के लिए अप्रासंगिक है।
रोबिनटेकस

4

आसान हो जाता है

<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

इसे इस्तेमाल करे:

<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

IndexOf आज़माएं

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

आप खोज की कोशिश भी कर सकते हैं (नियमित अभिव्यक्ति के लिए)

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

2

जावास्क्रिप्ट में url लेने के लिए Window.location.href का उपयोग करें। यह एक संपत्ति है जो आपको ब्राउज़र का वर्तमान URL स्थान बताएगा। संपत्ति को कुछ अलग सेट करने से पृष्ठ पुनर्निर्देशित हो जाएगा।

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

यह कैसे जांचें कि कोई url डिफ़ॉल्ट पेज है और स्ट्रिंग iam चेकिंग दिखाई नहीं दे रही है। उदाहरण के लिए sample.com/homepage.aspx मेरा पेज है और iam स्ट्रिंग 'होमपेज' की तलाश में है। अगर ((loc.toString ()। toUpperCase ()। indexOf ('होमपेज')> -1)) {} ठीक काम करता है, लेकिन जब नमूना पर Iam (जो अभी भी होमपेज .aspx को इंगित करता है) कोड से ऊपर काम नहीं करेगा। इस परिदृश्य की जाँच कैसे करें? कृपया मदद करें!
स्वेता

2

मुझे एक बनाना 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');
}

1

अपनी 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');
                }

मुझे नहीं पता था ~, इसलिए मैंने इसे देखा: " सत्यता में पाया गया रिटर्न मान ~बदलने indexOf()की एक चाल है (जबकि मिथ्या के रूप में नहीं पाया जाता है)। लोग अन्यथा इसे संख्याओं को कम करने के अपने दुष्प्रभाव के लिए उपयोग करते हैं ..." - stackoverflow.com/a/12299678/3917091
नियमित जो

1

शब्द सीमाओं \bया समान उपकरणों के कारण बहुत सारे लोगों के लिए नियमित अभिव्यक्तियाँ अधिक अनुकूल होंगी । शब्द सीमाओं होते हैं, जब से किसी 0-9, a-z, A-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 आमतौर पर परिभाषित _करता है 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}लेकिन जावास्क्रिप्ट ऐसा नहीं करता है, जो विदेशी पात्रों का पता लगाने के काम को बहुत आसान बना देगा। कुछ इस तरह[^\p{L}](filters|in|any|alphabet)[^\p{L}]


नियमित भावों का एकमात्र नीचे का पक्ष यह है कि वे "केवल लिखें" (यानी पढ़ने के लिए असंभव);)
रेवेल्वेस

@RayLoveless हाँ, बिना जावास्क्रिप्ट वाली भाषाओं में (?#comments)और फ्रीस्प्रेसिंग # comments। हालाँकि, यह पढ़ना मुश्किल नहीं है। // जब मैं जावास्क्रिप्ट में एक जटिल रीगेक्स का उपयोग करता हूं, तो मैं एक टिप्पणी की प्रतिलिपि रखता हूं कि मैं योग्य संपादित कर सकता हूं।
नियमित जो

0

मान लीजिए आपके पास यह स्क्रिप्ट है

<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

यह एक अच्छा अभ्यास होगा यदि आप अपने स्ट्रिंग को निचले या अपरकेस में बदलते हैं क्योंकि इंडेक्सोफ़ () विधि संवेदनशील है। यह तब होगा जब आपकी खोज संवेदनशील मन से भरी न हो इसलिए खोज के लिए जो संवेदनशील नहीं है, वह निम्न होगी:

var string= location.href;
var convertedString= string.toLowerCase();
 if(convertedString.indexOf(franky) != -1){
  alert("url has franky");
}
else{
 alert("url has no franky");
 }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.