jquery正则表达式只是发现第一次出现

时间:2015-02-07 16:07:09

标签: jquery regex

我试图找到脚本的特定类模式。 但我的正则表达式调用未能找到所有事件。 相反,它只返回第一个。

string = "col-xs-1 col-md-middle col-lg-middle"
s = /col(?:-(..)-|-)(?:middle|top|bottom)/g.exec(string);
console.log(s)

output -> ["col-md-middle", "md"]

有谁知道我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

使用string.match功能。具有全局正则表达式的exec意味着在循环中使用,因为它仍将检索所有匹配的子表达式。

> str.match(/col(?:-(..)-|-)(?:middle|top|bottom)/g)
[ 'col-md-middle', 'col-lg-middle' ]

如果您想获得匹配以及捕获,请使用以下内容。

> var re = /col(?:-(..)-|-)(?:middle|top|bottom)/g;
undefined
> var m;
undefined
> var a = [];
undefined
> while ((m = re.exec(str)) != null) {
... a.push(m[0])
... a.push(m[1])
... }
4
> a
[ 'col-md-middle',
  'md',
  'col-lg-middle',
  'lg' ]

Reference

答案 1 :(得分:0)

    var t = this
        s = t.attr('class').match(/(col(-(..)-|-)(middle|top|bottom))/g).join(' ').split('-');
    $(s).each(function(k,v){
        if (k%2!==0) {
           // here i get the string after col-
        }
    });

这是我的解决方案, 稍微小一些,我喜欢避免同时,他们只是喜欢无限循环自己