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

javascript removeClass wildcard, less specific pattern

在我拥有的元素中:

<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/

您可以试试这个正则表达式,它会删除在 fa-fa-cc 之后超过 2 个字符的所有子字符串,特别是

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

解释:

  • fa - 按字面意思查找 fa
  • (?:-\w{3,})+ - 在非捕获组中查找 - 后跟三个或更多单词字符一次或多次以覆盖大小写 fa-address-book 大小写。

Regex101 Demo

Your updated JSFiddle Demo

让我知道这是否适合你。