簡體   English   中英

JS RegExp類名的第一個元素

[英]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"
  1. 確保測試包含html:

    如果(/^<.+>$/.test(test))

  2. 然后,調用$():

    var tempHtml = $(test);

  3. 它將解析標記,您可以通過jQuery或直接查詢標記:

    var firstElementClassNames = tempHtml [0] .className.split('');

描述

此正則表達式將捕獲字符串中第一個div標簽的類名。 該表達式確實需要選項sm來匹配所有行,點匹配新行字符。

\\A.*?<div\\b(?=\\s)(?=(?:(?![^>])'[^']*'|"[^"]*"|.)*\\sclass="([^"]*)")

在此處輸入圖片說明

如果您不知道第一個具有class屬性的元素名稱,則可以通過將標記名稱替換為\\w+來修改表達式。 捕獲組0將包含標簽名稱和左括號:

``\\ A。 ?<\\ w + \\ b(?= \\ 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
        )

)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM