使用RegEx匹配多个元素类

时间:2011-05-28 10:22:00

标签: javascript jquery regex

我在我的jquery插件中为我的目标元素分配了类,如plugin-prop-value。所以元素可以有几种类型。目前我只是attr('class').split(' ')然后for等等。现在我正在尝试直接使用regexp访问它们。

我正在使用这种模式/\bplugin-(prop1|prop2|prop3)-(\S+)/g

match()获取了一系列匹配的类,所以我必须再次循环它们。 (loop-> regexp,或loop-> split)

exec()只获得了第一场比赛[ wholeclass, prop, value ]的数组,似乎g旗帜不在这里播放,但我希望有更多类似的内容

[ [ wholeclass, prop, value ], [ ... ], [ ... ] ]

最好的方法是什么?

3 个答案:

答案 0 :(得分:1)

var pluginNameValuePairs= $.map(element.className.split(/\s+/), function(cls) {
    var parts= cls.split('-');
    if (parts.length<3 || parts[0]!=='plugin') return null;
    return [parts[1], parts.slice(2).join('-')];
});

如果您需要在值中添加任意字符,例如空格或-,您可能也想对它们进行URL编码。

答案 1 :(得分:1)

要对字符串使用正则表达式进行多次匹配,您只需再次运行exec

str = "prop-a prop-b prop-c";
re = /\bprop-([abc])/g;
while ((matches = re.exec(str))) {
    console.log(matches[1]);
}

// output is:
// a
// b
// c

答案 2 :(得分:0)

jQuery有一个hasClass()方法,据我所知,它会缓存类名 - 从而避免需要一次又一次地解析它们。