我想知道自己是否想要在html文件中获取所有类名,我可以使用regex
?我不明白我可以装载它的方式。我有这段代码:
HTML
<html>
<div class="myFirstClass"></div>
<div class="mySecondClass2"></div>
</html>
我想知道如何获得:
myFirstClass
mySendCLass2
使用正则表达式...我尝试使用class=".*"
但它获取了名称之外的所有内容。
答案 0 :(得分:2)
"class=".*"
的例子似乎在轨道上,但这些问题的主要问题是*是“贪婪的” - 它会占用尽可能多的字符,可能会匹配最后一个引号线。
一种选择是使用\w
代替.
,仅检索单词字符。根据您使用的语言,我认为HTML解析器可能是更好的选择。许多语言都有这样的库。
注意:除非您的使用非常基本,否则使用\ w的正则表达式还需要考虑空格分隔的多个类名。
答案 1 :(得分:2)
不要使用Regex来解析HTML。如果您使用的是.NET,则可以使用类似HTML Agility Pack。
的内容对于您的特定查询,您可能会执行类似的操作;
var classNames = htmlDoc.DocumentNode
.Descendants("div")
.Select(x => x.Attributes["class"].Value);
答案 2 :(得分:2)
默认情况下,正则表达式非常渴望,因此".*
将以"
开头,以"
结尾,以获取最长的字符串。你需要的是它停在第一个匹配的"
上。试试这个:
class=\"[^\"]*\"
答案 3 :(得分:2)
使用map function
var classes= $("div").map(function() {
return this;
}).get();
for(i=0;i<classes.length;i++){
console.log($(classes[i]).attr('class'));
}
JSFiddle工作代码链接