說明
這個正則表達式將捕獲的字符串中的第div
標籤的類名。該表達式需要選項s
和m
用於匹配所有行,點匹配換行符。
\A.*?<div\b(?=\s)(?=(?:(?![^>])'[^']*'|"[^"]*"|.)*\sclass="([^"]*)")
如果你不知道用類屬性的第一個元素的名字,那麼你可以用\w+
更換標籤名稱修改表達式。捕獲組0將包含標籤名稱和開頭括號:
``\ A。 ? (?= \ s)(?=(?:(?![^>])'[^']'|「[^」] 「|。) \的sclass = 「([^」] *)「)`
JavaScript示例
輸入樣本文本
<div class="a_classname a_2nd_classname">[OTHER DOM ELEMENTS HERE]</div>
代碼
<script type="text/javascript">
var re = /\A.*?<div\b(?=\s)(?=(?:(?![^>])'[^']*'|"[^"]*"|.)*\sclass="([^"]*)")/;
var sourcestring = "source string to match with pattern";
var results = [];
var i = 0;
for (var matches = re.exec(sourcestring); matches != null; matches = re.exec(sourcestring)) {
results[i] = matches;
for (var j=0; j<matches.length; j++) {
alert("results["+i+"]["+j+"] = " + results[i][j]);
}
i++;
}
</script>
相配
$matches Array:
(
[0] => Array
(
[0] => <div
)
[1] => Array
(
[0] => a_classname a_2nd_classname
)
)
特別是如果它是一個ajax響應,它應該不會很難*使它成爲一個DOM。只需獲得'responseXML'而不是'responseText'。 – Bergi