我想通过正则表达式获得与键匹配的所有类,所以当我们搜索btn时,我们会得到这样的结果:
<div class="btn"> // match
<div class="span4"> // not match
<div class='btnbtn-success'> // not match
</div>
<div class=' bbtn '> // not match
</div>
<div class=' bbtn '> // not match
</div>
<div class=' b btn '> / match
</div>
<div class='cbbtn '> // not match
</div>
<div class='btn '> // match
</div>
<div class=' bbtn '> // not match
</div>
<div class=' btn'> // match
</div>
<div class=" btn "> // match
</div>
<div class='hello btn '> // match
</div>
<div class=" btn "> // match
</div>
<div class=" btn hello"> // match
</div>
<div class=" btnaa hello"> // not match
</div>
<div class=" hello btn hello"> // match
</div>
<div class=" hello btn"> // match
</div>
<div class=" hello btn hello"> // match
</div>
<div class=" hello btn "> // match
</div>
<div class=" btna "> // not match
</div>
<div class=" btna-success "> // not match
</div>
</div>
</div>
在代码中找到 btn 类名的最佳正则表达式是什么?
答案 0 :(得分:1)
不确定是否只需要div或类名。但我会试一试 我猜这样的事情是这样的:
/(.*[\s+\"\']btn[\s+\"\'].*)/g
演示:http://regex101.com/r/fD6fC4
随时提出任何疑问或澄清
更新回答
我正在编辑正则表达式,使其看起来有点复杂,但它将涵盖人们在评论中提到的案例。感谢大家对改进它的意见。
改进的正则表达式:/(?=<[^>]+(?=[\s+\"\']btn[\s+\"\']).+)([^>]+>)/g
答案 1 :(得分:0)
您的示例不需要正则表达式。您还没有说出输入是什么(浏览器DOM?HTML的JavaScript字符串?)或者您想要输出的格式(DOM集合?匹配字符串列表?)。
您可以使用getElementsByClassName来满足您的示例。
除非你遍历DOM中的所有元素并使用正则表达式if(/ \ bbtn \ b / .test(element.className))测试类名,否则正则表达式会选择不是确实在HTML类属性值中(除非你的HTML总是以某种方式限制,以使其不可能)。
答案 2 :(得分:0)
我认为使用jQuery会隐藏大部分复杂性:
此代码段/正则表达式可能会解决您的问题:
([\\W]btn\\b)|^btn$
我在这里测试了它:http://jsfiddle.net/5kTBX/(我将父类重命名为 btn2 ,以显示正则表达式的正确功能。
如果有任何问题或改进,请告诉我。