2011-05-03 110 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); 
} 
相关问题