2009-07-07 24 views
0

如何檢查使用javascript的字符串中是否存在url或url模式。使用javascript檢查字符串中存在的模式

<script language="javascript"> 
var str="http://localhost/testprj?test=123213123"; 
var s=location.href; 
if(s.match('/http://localhost/testprj?test=1232/'){ 
    alert('welcome!!'); 
} 
</script> 

我需要的是檢查url模式。

完整代碼

<html> 
<head> 
</head> 
    <body> 
<style> 
.active{ 
    color:#009900; 
    font-weight:bold; 
} 
</style> 

    <div id="menu"> 
    <ul><li> 
    <ul><li> <a href="html1.html">0</a> 
     <a href="html.html" >1</a> 
     <a href="2">2</a> 
     </li> 
    </ul></li> 
    </ul> 
    </div> 

    <script language="javascript"> 

     var c=document.getElementById('menu').getElementsByTagName('a').length; 
     var v=document.getElementById('menu').getElementsByTagName('a'); 
     var s=location.href; 
     //alert(s.match('html')); 
     for(var i=0;i<c;i++){ 
      //alert('href'+v[i].className); 
      if(v[i].href==location.href){ 
       v[i].className='active'; 
      } 

     } 

    </script> 


    </body> 
</html> 

這是工作正常,但如果get PARAMS是導致一些problms ...

像page.php文件?頁=用戶列表 工作正常

但是

like page.php?page = userlist & ID = 121221

這是基本鏈接URL 鏈接

+0

在完整的代碼中,我沒有看到任何URL正則表達式(沿着我們建議的內容)。但是,如果我理解「獲取參數會導致一些問題」,則可能需要對正則表達式進行一些服務器端(PHP)轉義。 – 2009-07-07 08:46:36

回答

-1

是finaly我得到了解決方案 我用過的功能

for(var i=0;i<len;i++){ 
     if(strstr(url,a[i].href)) { 
      a[i].className='active'; 
     } 
    } 

    function strstr(url, href) { 
     var pos = 0; 
     url += ''; 
     pos = url.indexOf(href); 
     if (pos == -1) { 
      return false; 
     } 
     else{ 
      if(strcmp(url,href)==0) 
       return 1; 
     } 

    } 
    function strcmp (str1, str2) { 
     return ((str1 == str2) ? 0 : ((str1 > str2) ? 1 : -1)); 
    } 

就這樣,它的工作很好!

謝謝

+0

Althoug它看起來不錯,正則表達式的正確答案是「使用javascript檢查字符串中存在的模式」的問題的正確答案,因爲此函數只能檢查url中發生的子字符串。對於子字符串檢查的具體情況,一個好的問題和答案已經發布:http://stackoverflow.com/questions/1789945/how-can-i-check-if-one-string-contains-another-substring – atfornes 2016-02-22 18:44:02

1
/http:\/\/localhost\/testprj\?test=1232/.test(s) 
4

對於圖案檢查,你會想看看regular expressions

你想檢查什麼樣的圖案?如果你只是想檢查一個字符串是否是一個URL,下面的代碼應該做的:

var myString = "http://blah.com/helloworld/"; 
if (myString.match(/http:\/\//)) { 
    alert("'myString' is a URL."); 
} 

史蒂夫

0

我覺得你只是有一些小的語法問題:

var re = /http:\/\/localhost\/testprj\?test=1232/ 
var s=location.href; 
if(s.match(re)) { 
    alert('welcome!!'); 
} 
+0

/http:\/\/localhost \/testprj \?test = 1232/ 我不能這樣使用。因爲請檢查我的問題我將更新 – coderex 2009-07-07 08:17:32

0

注意正則表達式是他們自己在javascript中的數據類型:沒有引號或任何東西,只是/定界符