簡體   English   中英

在 Javascript 或 jQuery 中的兩個字符串之間查找字符串

[英]Find string between two strings in Javascript or 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.Z4D236D9A2D102C5FE6AD1C50DA4BEC.5 我不想從“&”中拆分字符串並獲取中間字符串,因為它破壞了一些帶有 & 字符的 url。 任何幫助,將不勝感激。 謝謝:)

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

現場演示

這是您要查找的正則表達式:

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

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

還有一個頁面,您可以在以下位置測試未來的正則表達式:

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

您可以使用拆分:

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

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

如何獲取 JavaScript 中的查詢字符串值?

如果瀏覽器決定使用不同的東西怎么辦? 正則表達式或拆分將中斷。

此代碼將為您提供所需的確切結果:

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

這是簡單的 function 在 TypeScript 和 JavaScript 中完成此操作,並進行一些異常情況處理:

TypeScript:

/**
 * 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);
}

有一個相當簡單的腳本可以使用 jQuery(或不帶)執行此操作,可以在此處找到http://jquery-howto.blogspot.com/2009/09/get-url-parameters-values-with-jFCCquery.ZFC35FDC70D25

只需將window.location.href替換為參數即可。

像這樣:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM