在一个正则表达式中删除2(多个)匹配类

时间:2013-02-15 13:05:40

标签: jquery regex matching

我现在完成但我必须拨打2次.removeClass()个功能

如何将其合并以在一次正则表达式调用中查找结果?

HTML:

<div class="one-abc two-cba three-bac"></div>

jQuery:

$('div')
  .removeClass(function(i,c){var m=c.match(/one-[a-z]{0,5}/);return m?m[0]:m;})
  .removeClass(function(i,c){var m=c.match(/two-[a-z]{0,5}/);return m?m[0]:m;});

演示: http://jsbin.com/umoded/1/edit


Find contains class name in multiple classes

Remove matching class with regex

2 个答案:

答案 0 :(得分:4)

将两个表达式合并为一个,使用g,然后加入匹配项:

  var m = c.match(/(one-[a-z]{0,5}|two-[a-z]{0,5})/g);
  return m ? m.join(' ') : m;

http://jsfiddle.net/ExplosionPIlls/mnYpB/

答案 1 :(得分:3)

来自api.jquery.com的

  

可以一次删除多个类,以空格分隔,从匹配元素集中删除,如下所示:
  $('p')。removeClass('myClass yourClass')

- &GT;

.removeClass(function(i,c){
    var m=c.match(/one-[a-z]{0,5}/);
    var n=c.match(/two-[a-z]{0,5}/);
    return m+" "+n;});