2011-05-03 62 views
6

我一直試圖在一行中的兩個字符串之間得到一個字符串。我發現了很多使用正則表達式的教程,但由於我在正則表達式方面並不擅長,我無法弄清楚如何去做。任何幫助將不勝感激。查找Javascript或jQuery中兩個字符串之間的字符串

var fullUrl = "http://something.com/File/?URL=http://www.wireshock.com/&IP=0.0.0.0&CAT=BLOG&USER=MAND\\DEFAULT\\market4080"; 

我需要找出一種方式來獲得字符串http://something.com/File/?URL=& IP =之間,就回到HTTP:// WWW。 wireshock.com。我不想將字符串從「&」中拆分出來,並獲取中間字符串,因爲它損壞了一些其中包含&字符的網址。任何幫助,將不勝感激。謝謝:)

回答

12
fullUrl.match(/URL=(.*?)&/i)[1]; 
3
var matches = fullUrl.match(/URL=(.+)\&IP=/); 
if (matches.length > 1) { 
    alert(matches[1]); 
} 

Live demo

3

你可以使用分裂:

var result = fullUrl.split('http://something.com/File/?URL=')[1].split('&IP=')[0]; 

或者如果你真的想要一個正則表達式,但這很脆弱。我會建議你不要這樣做。相反,正確地分析查詢字符串像一個負責任的成年人:

How can I get query string values in JavaScript?

如果瀏覽器決定奧德事情有什麼不同?正則表達式或分裂將打破。

0

只要你想這個代碼將會給你確切的結果:

var url = fullUrl.split('?URL=')[1].split('/&IP=')[0]; 
0

這是簡單的功能在兩個打字稿和JavaScript的一些異常情況的處理做到這一點:

打字稿:

/** 
* Parses substring between given begin string and end string. 
* @param beginString the begin string 
* @param endString the end string 
* @param originalString the original string 
* @returns the substring or null if either tag is not found 
*/ 
export function parseBetween(beginString, endString, originalString): string { 
    var beginIndex: number = originalString.indexOf(beginString); 
    if (beginIndex === -1) { 
     return null; 
    } 
    var beginStringLength: number = beginString.length; 
    var substringBeginIndex: number = beginIndex + beginStringLength; 
    var substringEndIndex: number = originalString.indexOf(endString, substringBeginIndex); 
    if (substringEndIndex === -1) { 
     return null; 
    } 
    return originalString.substring(substringBeginIndex, substringEndIndex); 
} 

JavaScript:

/** 
* Parses substring between given begin string and end string. 
* @param beginString the begin string 
* @param endString the end string 
* @param originalString the original string 
* @returns the substring or null if either tag is not found 
*/ 
function parseBetween(beginString, endString, originalString) { 
    var beginIndex = originalString.indexOf(beginString); 
    if (beginIndex === -1) { 
     return null; 
    } 
    var beginStringLength = beginString.length; 
    var substringBeginIndex = beginIndex + beginStringLength; 
    var substringEndIndex = originalString.indexOf(endString, substringBeginIndex); 
    if (substringEndIndex === -1) { 
     return null; 
    } 
    return originalString.substring(substringBeginIndex, substringEndIndex); 
} 
相關問題