通过正则表达式查找类名

时间:2014-03-10 11:02:01

标签: javascript regex

我想通过正则表达式获得与键匹配的所有类,所以当我们搜索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 类名的最佳正则表达式是什么?

3 个答案:

答案 0 :(得分:1)

不确定是否只需要div或类名。但我会试一试 我猜这样的事情是这样的:

/(.*[\s+\"\']btn[\s+\"\'].*)/g

演示:http://regex101.com/r/fD6fC4

随时提出任何疑问或澄清

更新回答

我正在编辑正则表达式,使其看起来有点复杂,但它将涵盖人们在评论中提到的案例。感谢大家对改进它的意见。

改进的正则表达式:/(?=<[^>]+(?=[\s+\"\']btn[\s+\"\']).+)([^>]+>)/g

演示:http://regex101.com/r/qH2hZ2

答案 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 ,以显示正则表达式的正确功能。

如果有任何问题或改进,请告诉我。