[英]JS RegExp classname first element
我目前正在嘗試查找DOM字符串的第一個“元素”的類名。 根本沒有DOM,只是特定DOM元素的字符串。
例:
var test = '<div class="a_classname a_2nd_classname">[OTHER DOM ELEMENTS HERE]</div>';
我的問題是,在完成加載之前,我不知道var的內容(它是ajax響應)。 因此它必須通過regexp絕對動態,並且我需要該var中第一個元素的整個類名。
我已經在Google周圍搜索,但是沒有什么可以解決我的問題。
任何建議,歡迎:)
多謝
如果在代碼中使用jquery,則可以使用它
$('<div class="a_classname a_2nd_classname"><a class="foo">bar<a>[OTHER DOM ELEMENTS HERE]</div>').attr("class")
或使用DomParser
var xmlString = '<div class="a_classname a_2nd_classname"><a class="foo">bar<a>[OTHER DOM ELEMENTS HERE]</div>';
var parser = new DOMParser() ;
var doc = parser.parseFromString(xmlString, "text/xml");
doc.firstChild.className // => "a_classname a_2nd_classname"
確保測試包含html:
如果(/^<.+>$/.test(test))
然后,調用$():
var tempHtml = $(test);
它將解析標記,您可以通過jQuery或直接查詢標記:
var firstElementClassNames = tempHtml [0] .className.split('');
此正則表達式將捕獲字符串中第一個div
標簽的類名。 該表達式確實需要選項s
和m
來匹配所有行,點匹配新行字符。
\\A.*?<div\\b(?=\\s)(?=(?:(?![^>])'[^']*'|"[^"]*"|.)*\\sclass="([^"]*)")
如果您不知道第一個具有class屬性的元素名稱,則可以通過將標記名稱替換為\\w+
來修改表達式。 捕獲組0將包含標簽名稱和左括號:
``\\ A。 ?<\\ w + \\ b(?= \\ s)(?=(?:(?![^>])'[^'] '|“ [^”] “ |。) \\ sclass =”([^“ ] *)“)`
輸入樣本文字
<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
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.