javascript - 求助!关于js中正则分组的问题。
本文介绍了javascript - 求助!关于js中正则分组的问题。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
代码功能是检测一个html元素中是否包含某个类,但是在使用正则的过程中我就是不理解为什么要加分组,分组的作用是什么,以及在这里是怎么去匹配的,如果没加分组会如何?
我试过了,如果不加分组,匹配是不正确的。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>测试</title>
<script type="text/javascript">
window.onload=function(){
var box=document.getElementById('box');
//检测类是否存在
function hasClass(element,cName){
alert(!!element.className.match(new RegExp('(\\s|^)'+cName+'(\\s|$)')));
}
//调用
hasClass(box,'bb'); //false
hasClass(box,'bbb'); //true
}
</script>
</head>
<body>
<div id="box" class="bbb aaa">测试</div>
</body>
</html>
解决方案
function hasClass(element, cName) {
return (' ' + element.className + ' ').indexOf(' ' + cName + ' ') > -1;
}
推荐这样写,兼容ie6+
不分组,生成的正则是 s|^bbbs|$ 意思是匹配 s 或 ^bbbs 或结束这3种情况,除非你的class是空或只有bbb才能匹配。
分组,生成的正则是 (s|^)bbb(s|$) 意思是匹配 空格或开头,然后是bbb,然后是空格或结束,这三部分组成的四种情况。
class="bbb ccc" 是 ^bbbs 的组合匹配到的
class="aaa bbb" 是 sbbb$ 的组合匹配到的
class="aa bbb cc" 是 sbbbs 匹配的
class="bbb" 是 ^bbb$ 匹配的
这篇关于javascript - 求助!关于js中正则分组的问题。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文