我自由地承認,我對正則表達式的理解是多餘的。也就是說,我無法做到這一點的頭或尾。這隻發生在Chrome中。Chrome中的正則表達式奇怪
我有這段代碼拉出來在一個HTML字符串body
標籤之間的文本:
var extractBodyHtml = function (obj) {
var regex = /<body.*?>([\s\S]*?)<\/body>/g;
//if (obj.match(regex)) {
if (regex.test(obj)) {
return RegExp.$1;
} else {
return obj;
}
};
更新
在撥弄我不能重現此。事實上,完全相同的代碼在一個地方工作,而不是相同的HTML,但不是另一個。免得你覺得我瘋了,這裏是調試器。
http://www.outsharked.com/chromedebug.png
注意註釋行。這是第一個版本。有時它有效。在其他情況下,RegExp.$1
只會返回單個字符「r」。這對於特定的情況總是可重現的。
請注意,obj.match(regex)
始終返回正確的匹配(包括body標籤),但訪問反向引用會給「r」有時。
當我將代碼更改爲regex.test(obj)
時,情況始終正常,RegExp.$1
返回內部內容。
我在做什麼錯?
**爲什麼**你在做這個? 'document.body.innerHTML'有什麼問題? – Matt
因爲它是一個字符串。它不是DOM的一部分。這是來自ajax查詢的響應。 –
你可以發佈你的代碼不工作在jsfiddle的例子嗎? –