如何在 jQuery 选择器上应用正则表达式?

How can I apply a regex on a jQuery selector?

我在网上搜索了一下,但没有找到解决我的问题的方法。这是我的select或:

jQuery('[data-group="' + a + '"]').show()

a 是类似于 swimming 的文本或任何单词。在 HTML 中它看起来像这样:

<div data-group="swimming">...</div>

所以上面的 selector 会显示 div 如果 a = swimming。现在假设数据组包含单词 simming,但它不是唯一的,如下所示:

<div data-group="swimming,driving,flying">...</div>

我怎样才能 select div 与 select 或者 a = swimming?我希望你明白我的意思:)。

谢谢!

您可以使用包含选择器的值:

jQuery('[data-group*="' + a + '"]').show();

但甚至会匹配 swimming 因为 a 等于 swim.

如果这很重要,则使用例如

过滤它
jQuery('[data-group]').filter(function(){
    return this.dataset.group.split(',').indexOf(a) != -1
}).show();

如果您也可以更改 HTML 标记,那就更好了:

<div data-group="swimming driving flying">...</div>

那么你可以使用:

jQuery('[data-group~="' + a + '"]').show();

您也可以使用.filter()

jQuery('[data-group]').filter(function(){
    return $(this).data('group').split(',').indexOf(a) > -1; //Convert to an array an check whether elements exist in array

    //Using native code
    //return this.dataset.group.split(',').indexOf(a) > -1
}).show();

参考文献:indexOf() and HTMLElement.dataset