Javascript JS RegExp classname第一个元素

Javascript JS RegExp classname第一个元素,javascript,regex,classname,Javascript,Regex,Classname,我目前正在尝试查找DOM字符串的第一个“元素”的类名。 它根本不是DOM,它只是特定DOM元素的字符串 示例: var test = '<div class="a_classname a_2nd_classname">[OTHER DOM ELEMENTS HERE]</div>'; var test='[此处的其他DOM元素]; 我的问题是,在var完成加载之前,我不知道它的内容(这是一个ajax响应)。所以它必须是通过regexp绝对动态的,我需要该变量中第一个元

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

示例:

var test = '<div class="a_classname a_2nd_classname">[OTHER DOM ELEMENTS HERE]</div>';
var test='[此处的其他DOM元素];
我的问题是,在var完成加载之前,我不知道它的内容(这是一个ajax响应)。所以它必须是通过regexp绝对动态的,我需要该变量中第一个元素的整个类名

我在谷歌上搜索了一下,但什么也没解决我的问题

欢迎任何建议:)


thx很多

如果您在代码中使用jquery,您可以使用它来实现这一点

$('<div class="a_classname a_2nd_classname"><a class="foo">bar<a>[OTHER DOM ELEMENTS HERE]</div>').attr("class")
$('bar[此处的其他DOM元素]).attr(“类”)
或者使用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"
var-xmlString='bar[此处的其他DOM元素];
var parser=新的DOMParser();
var doc=parser.parseFromString(xmlString,“text/xml”);
doc.firstChild.className/=>“a\u className a\u第二个\u className”
  • 确保测试包含html:

    如果(/^$/.测试(测试))

  • 然后,调用$():

    var tempHtml=$(测试)

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

    var firstElementClassNames=tempHtml[0]。className.split(“”)

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

    \A.*]”[^']*'|“[^”]*'|]*\sclass=“([^”]*)”

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

    ``\A.?])“[^']”|“[^”]“|”)\sclass=“([^”]*)”`

    Javascript示例 输入示例文本

    <div class="a_classname a_2nd_classname">[OTHER DOM ELEMENTS HERE]</div>
    
    [此处的其他DOM元素]
    
    代码

    <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>
    
    
    var re=/\A.*?])“[^']*”|“[^”]*“|”)*\sclass=“([^”]*”)/;
    var sourcestring=“要与模式匹配的源字符串”;
    var结果=[];
    var i=0;
    for(var matches=re.exec(sourcestring);matches!=null;matches=re.exec(sourcestring)){
    结果[i]=匹配项;
    对于(var j=0;j数组)
    (
    [0]=>阵列
    (
    [0]=>a\u类名a\u第二个\u类名
    )
    )
    
    特别是如果它是ajax响应,将其变成DOM应该不难。只需获取
    responseXML
    而不是
    responseText
    。嗨,Andrevsinky,对不起,我忘了说我不想使用jQuery。但是谢谢:)嗨,噢,DOMParser看起来不错…但是对于类名这样的东西来说,它不是太重了吗?嗨,这看起来太棒了。我会尽快尝试它(目前不在计算机上)…THX很多
    $matches Array:
    (
        [0] => Array
            (
                [0] => <div
            )
    
        [1] => Array
            (
                [0] => a_classname a_2nd_classname
            )
    
    )