我需要在JavaScript中使用正則表達式來匹配url中的某些文本。使用javascript正則表達式來捕獲url中的文本
下面是一個例子:
「qty1 = 0 & qty2 = 0 & qty3 = 0 &」
我要匹配的文本(號碼)之後的 '=' 和前的附帶'&'只要字符串中出現'qty'字樣。每次生成url時,文本(數字)都會更改,所以我想匹配新的文本(數字)。
我可以用什麼正則表達式來解決這個問題?
任何幫助,將不勝感激!
我需要在JavaScript中使用正則表達式來匹配url中的某些文本。使用javascript正則表達式來捕獲url中的文本
下面是一個例子:
「qty1 = 0 & qty2 = 0 & qty3 = 0 &」
我要匹配的文本(號碼)之後的 '=' 和前的附帶'&'只要字符串中出現'qty'字樣。每次生成url時,文本(數字)都會更改,所以我想匹配新的文本(數字)。
我可以用什麼正則表達式來解決這個問題?
任何幫助,將不勝感激!
var queryStr = "qty1=0&qty2=0&qty3=0";
var regex = /qty(\d+)=(\d+)/g;
var match = regex.exec(queryStr);
while(match != null){
var numBeforeEquals = match[1];
var numAfterEquals = match[2];
// do your comparison, for example, if it's > 0:
if(numAfterEquals > 0){
// do something
}
match = regex.exec(queryStr);
}
請注意/正則表達式的結尾處,在一些JavaScript實現中,如果沒有它,最終會出現無限循環。
下面是一個替代解決方案(在工作URL中)。我稱之爲替代方案,因爲我使用了表達式的兩部分,我認爲它可以被優化。
var breakdown = "http://local/?wtf=omg&qty12=a&qty2=b&qty3=4&test=5".match(/qty[0-9]{0,9999}(.*?)&/ig);
for(var i in breakdown) {
var v = breakdown[i].match(/qty[0-9]{0,9999}\=(.*?)&/i)[1];
if(v == 4 || v == "a") {
alert("Found '"+v+"'!")
}
}
這幾乎就是我所需要的。有沒有辦法改變正則表達式來匹配「qty」和「=」之後的任何數字?現在它只檢查數字0-9。另外,是否有一種方法可以單獨捕獲每個值,以便我可以針對每個值運行條件if語句以運行單獨的代碼塊? – gijoe426 2012-02-02 04:25:21
是的,是的,我更新了片段接受高達9999和一個區域爲您的條件陳述 – 2012-02-02 04:36:02
試試這個
var regex = /qty[\d]+=(\d+)/g,
text = "qty1=5&qty2=7&qty3=8&";
while(match = regex.exec(text)) {
console.log(match[1]);
}
@ggreiner失蹤+
在\d
,使上面的腳本不低於9號greather例如工作10,11
我需要澄清一下。匹配是錯誤的詞語,我的道歉。只要在文本字符串中出現「qty」時,我就需要使用正則表達式來查找任何文本(數字)在「=」和「&」之間。然後我需要將這個文本(數字)存儲在一個變量中,以便我可以對它運行一些條件語句。 – gijoe426 2012-02-02 03:40:48