Javascript JS RegExp classname第一个元素
我目前正在尝试查找DOM字符串的第一个“元素”的类名。 它根本不是DOM,它只是特定DOM元素的字符串 示例: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绝对动态的,我需要该变量中第一个元
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”
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
)
)