Csharp的正則表達式:JavaScript的正則表達式問題
Regex rg = new Regex("(?i)(?<=>)[^<]+(?=</TD>)");
JavaScript的正則表達式:
var pattern = (?i)(?<=>)[^<]+(?=</TD>);
var result = str.match(pattern);
Csharp的正則表達式模式的工作原理,但JavaScript的正則表達式模式行不通請幫助?
Csharp的正則表達式:JavaScript的正則表達式問題
Regex rg = new Regex("(?i)(?<=>)[^<]+(?=</TD>)");
JavaScript的正則表達式:
var pattern = (?i)(?<=>)[^<]+(?=</TD>);
var result = str.match(pattern);
Csharp的正則表達式模式的工作原理,但JavaScript的正則表達式模式行不通請幫助?
假設你在一個字符串形式有一個HTML片段,並在瀏覽器中,試圖用JavaScript來使用它:
var str = "<TD>33,7</TD><TD>100</TD><TD>20,0</TD>";
var temp = document.createElement("tr");
temp.innerHTML = str;
var tds = temp.getElementsByTagName("td")
for (var i=0; i<tds.length; i++) {
alert(tds[i].textContent); // use .innerText in Internet Explorer
}
看到了嗎?沒有必要的正則表達式 - 瀏覽器內置了一個功能完善的HTML解析器,不需要自己創建。當使用像jQuery JavaScript框架,上面變得更簡單:
$("<TD>33,7</TD><TD>100</TD><TD>20,0</TD>").find("td").each(function() {
alert($(this).text());
});
有沒有lookbehinds,或在JavaScript RE內聯改性劑。所以我們將(?i)
移動到正則表達式的末尾://i
。在回顧後是有點難以模仿,所以它更容易只接受一個事實,即它不能做,而是使用捕捉組來找到你所需要的:
var pattern = />([^<]+)<\/TD>/i;
var result = str.match(pattern);
// the match you want is in result[1]
編輯:看起來工作精細您提供兩個字符串:
"<td class='asd'>sd</td>".match(/>([^<]+)<\/TD>/i)
// [">sd</td>", "sd"]
如果你想匹配相同的字符串多個項目可以
AB
使用replace()
方法是這樣的:
var textInTds = []; // empty array we will fill up:
"<td>bla1</td><td class='asd'>sd</td>".replace(/>([^<]+)<\/TD>/ig, function($0, $1) {
textInTds.push($1); // push onto the array
return $0; // return the original text so that it doesn't destroy the string
});
// textInTds -> ["bla1", "sd"]
請輸入bla1工作但其他'td'sd不能工作其他td – Chicharito 2010-05-12 14:11:02
@oraclee:男孩......你肯定有錯誤的態度。如何評論你得到的實際解決方案,並回答你被問到的問題,而不是「不起作用」和「請幫助」的評論。 – Tomalak 2010-05-12 15:17:41
您應該接受以前問題的答案。 – Alsciende 2010-05-12 13:21:49
您正試圖使用正則表達式解析HTML。請不要這樣做,這是錯誤的,危險的,完全沒有必要的。 – Tomalak 2010-05-12 13:25:27
@Alsciende請幫助你的代碼不起作用 – Chicharito 2010-05-12 13:40:46