2009-09-09 190 views
0

我完全是新的正則表達式,並試圖使用它來匹配vales以便將它們映射到變量(javascript查看從php腳本生成的responceText中的輸出)。javascript正則表達式匹配兩個字符串之間的字符

目前,我有這樣的代碼:

if (xmlhttp.readyState==4) 
    { 
    document.getElementById("test").innerHTML=xmlhttp.responseText; 
    cmake = xmlhttp.responseText.match(/Combined_Make =(.*?)</); 
    } 

這裏是(部分)輸出的看着:

echo "<span class=\"note\">"; 
echo "Test Output\n"; 
echo " Combined_Make = $model\n"; 
echo " Combined_Model = $marque\n"; 

一切運行時,它實際上是在尋找一條線,如:

Combined_Make = GRAND JEEP CHEROKEE<br /> 

目前我正在回正是這樣:

'Combined_Make = GRAND切諾基>,GRAND CHEROKEE JEEP'

當然我只是 'GRAND切諾基' 在這種情況下:)之後 - 我也不清楚爲什麼我找回那精確的輸出!

請注意,我將需要分配多個var $,每個使用不同的開始刺激匹配!

在此先感謝您的幫助!

回答

1

嘗試:

/Combined_Make =([^<]+)/ 

然後你會希望訪問第一個捕獲組([1]):

cmake = xmlhttp.responseText.match(/Combined_Make =([^<]+)/)[1]; 

你可能想測試試圖訪問之前,它匹配第一個捕獲組雖然:

var match = xmlhttp.responseText.match(/Combined_Make =([^<]+)/); 
cmake = match && match[1]; 
+0

感謝 - 的作品! – Mizpah

0

String.match()總是返回一個數組,即使當有隻有一個匹配(除了當沒有匹配,則它返回NULL

在包括捕獲子組的模式的情況下,String.match()將始終以索引返回整個圖案匹配0,然後在索引1到N之後的匹配組。

這裏有一個清晰的方式來證明

"hello".match(/he(ll)(o)/); 
// yields ["hello", "ll", "o"] 
相關問題