javascript removeClass通配符,不太具体的模式

时间:2019-02-06 04:12:03

标签: jquery regex wildcard

在元素中,我有:

<span class="fa fa-address-book fa-user fa-4x fa-5x fa-lg"></span>

我需要删除它(fa-address-book和fa-user [font-awesome icons-names]),并保持这种方式:

注意:(fa-address-book和fa-user)是动态的,可以是任何人。

<span class="fa fa-4x fa-5x fa-lg"></span>

我的jQuery:

$(".button").click(function(e) {

    var regexp_order = /(^|\s)fa-\S+|(?=fa-4x)|(?=fa-5x)|(?=fa-lg)|(?=fa)/;
    var regexp = new RegExp(regexp_order, "g");

    $("#demo").removeClass (function (index, className) {
        return (className.match (regexp) || []).join(' ');
    });

    var temporal = $("#demo").attr("class");
    $("#result").append(temporal);

});

我有很多问题。我在做什么错了?

我的jsFiddle:

https://jsfiddle.net/m79c1edr/15/

1 个答案:

答案 0 :(得分:1)

您可以尝试使用此正则表达式,具体删除fa-fa-cc之后的所有超过两个字符的子字符串

fa(?:-(?:cc|\w{3,}))+ 

说明:

  • fa-从字面上找到fa
  • (?:-\w{3,})+-在一个非捕获组中找到-,后跟三个或更多单词字符,并且一次或多次查找全部fa-address-book大小写。

Regex101 Demo

Your updated JSFiddle Demo

让我知道这是否对您有用。