在Javascript或jQuery中查找两个字符串之间的字符串

时间:2011-05-03 19:35:00

标签: javascript regex string

我一直试图在一行中的两个字符串之间得到一个字符串。我发现了许多使用正则表达式的教程,但由于我对正则表达式不太好,我无法弄清楚如何做到这一点。任何帮助将不胜感激。

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 即可。我不想把字符串从“&”分开得到中间的字符串,因为它破坏了一些网址与&其中的人物。任何帮助,将不胜感激。谢谢:))

7 个答案:

答案 0 :(得分:13)

fullUrl.match(/URL=(.*?)&/i)[1];

答案 1 :(得分:3)

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

Live demo

答案 2 :(得分:3)

这是你正在寻找的正则表达式:

fullUrl.replace(/.*URL=([^&]*)\&.*/,'$1');

http://jsfiddle.net/aL5LU/2/

您可以测试未来正则表达式的页面:

http://www.regular-expressions.info/javascriptexample.html

答案 3 :(得分:3)

您可以使用拆分:

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

如果你真的想要一个正则表达式,但这很脆弱。我建议你不要这样做。相反,像负责任的成年人一样正确地解析查询字符串:

How can I get query string values in JavaScript?

如果浏览器决定使用不同的东西怎么办?正则表达式或拆分将会中断。

答案 4 :(得分:0)

有一个相当简单的脚本可以使用jQuery(或不带)来执行此操作,可以在此处找到 http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jquery.html

只需用参数替换window.location.href

像这样:

function getUrlVars(url)
{
    var vars = [], hash;
    var hashes = url.slice(url.indexOf('?') + 1).split('&');
    //...

答案 5 :(得分:0)

此代码将根据您的需要提供准确的结果:

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

答案 6 :(得分:0)

这是一个简单的功能,可以在TypeScript和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);
}