JS RegExp classname第一个元素

时间:2013-06-24 15:35:31

标签: javascript regex classname

我目前正在尝试查找DOM-String的第一个“元素”的类名。 它根本就没有DOM,它只是特定DOM元素的字符串。

示例:

var test = '<div class="a_classname a_2nd_classname">[OTHER DOM ELEMENTS HERE]</div>';

我的问题是在完成加载之前我不知道var的内容(它是一个ajax响应)。所以它必须通过regexp绝对动态,我需要该var中第一个元素的整个类名。

我已经用Google搜索了,但没有解决我的问题。

欢迎任何建议:)

很多

3 个答案:

答案 0 :(得分:0)

如果您在代码中使用它,可以使用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 :(得分:0)

  1. 确保,test包含html:

    if(/ ^&lt;。+&gt; $ / .test(test))

  2. 然后,在它上面调用$():

    var tempHtml = $(test);

  3. 它将解析您可以通过jQuery或直接查询的标记:

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

答案 2 :(得分:0)

描述

此正则表达式将捕获字符串中第一个div标记的类名。表达式确实需要选项sm来匹配所有行,而点匹配新行字符。

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

enter image description here

如果您不知道具有class属性的第一个元素名称,则可以通过将标记名称替换为\w+来修改表达式。捕获组0将包含标记名称和左括号:

。????!

``\ A &LT; \ W + \ B(?= \ S)(=(([^&GT;]) '[^'] '| “[^”]的 “|。) \的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
        )

)