你这个好```
那个烂的是我写的 
<ab test> 这种出现在中间的时候应该考虑进去.

解决方案 »

  1.   

    再混点分。
    var matches=["<ab>","</ab>","<cd>","<cd />","<ef poiuyt>"];
    var allowArray=["ab","c","ef"];
    var reg = new RegExp("<\/?("+allowArray.join("|") + ")(\s|>)","g");
    result =matches.join(",").match(reg)
    alert(result)
      

  2.   

    原来\s被转义了,再换一个。
    var matches=["<ab>","</ab>","<cd>","<cd />","<ef poiuyt>"];
    var allowArray=["ab","c","ef"];
    var reg = new RegExp("<\/?("+allowArray.join("|") + ")(\\s+.*?>|>)","g");
    result = matches.join(",").match(reg)
    alert(result)
      

  3.   

    接分儿
    var matches=["<ab>","</ab>","<cd>","<cd />","<ef poiuyt>"];
    var allowArray=["ab","c","ef"];var reg = new RegExp('<\\/?(?:'+allowArray.join('|')+')(?:>| )','g')
    var rs = matches.join(',').match(reg);
    alert(rs&&rs.join('\n')||false);
      

  4.   

    接分儿
    var matches=["<ab>","</ab>","<cd>","<cd />","<ef poiuyt>"];
    var allowArray=["ab","c","ef"];var reg = new RegExp('<\\/?(?:'+allowArray.join('|')+')(?:>| )','g')
    var rs = matches.join(',').match(reg);
    alert(rs&&rs.join('\n')||false);
      

  5.   

    汗~ CSDN系统有问题吧? 发了两遍? 
      

  6.   

    一直到后面的>
    没看清
    <script>
    var matches=["<ab>","</ab>","<cd>","<cd />","<ef poiuyt>"];
    var allowArray=["ab","c","ef"];var reg = new RegExp('<\\/?(?:'+allowArray.join('|')+')(?:>|\\s.*?>)','g')
    var rs = matches.join(',').match(reg);
    alert(rs&&rs.join('\n')||false);
    </script>
      

  7.   

    过来学习一下,我js水平 和楼主比不了,
    我用使用正则,用遍历的时候比较多。我是从cs方向转到网站的 努力学习javascript   ing
      

  8.   

    var matches=["<ab>","</  ab>","<cd>","<cd />","<ef poiuyt>"];var reg = new RegExp("<(?:\/\\s*)?("+allowArray.join("|") + ")(?:\\s+.*?)?>","g");  
      

  9.   

    <script type="text/javascript">
    window.onload = function() {
      var matches = ['<ab>', '<ab>', '<cd>', '<cd />', '<ef poiuyt>'];
      var allowArray=['ab', 'c', 'ef'];
      var reg = new RegExp('</?(?:' + allowArray.join('|') + ')\\b[^>]*>', 'g');
      var result = matches.join(',').match(reg);
      alert(result);
    }
    </script>由于 / 并非出现在 / / 的正则表达式声明中,也不是正则表达式中的
    元字符,所以 / 并不需要使用 \/ 来进行转义。对于捕获组 ( ) 的问题来说,如果不需要对表达式所匹配到的内容进行反向
    引用,为了减少几个字节的内存占用,建议采用非捕获组 (?:) 的形式。另外,使用字符串作为正则表达式来拼接的话存在一定的隐患,比如说字
    符串中含有正则表达式的元字符(比如 . \ ^ $ ? * + { [ ( | ) ] } 等字符),
    这样会造成拼接出来的正则表达式产生错误。