如何用JavaScript正则表达式替换类名部分?

如何用JavaScript正则表达式替换类名部分?,javascript,regex,Javascript,Regex,我有一个简单的div,其中包含各种类属性: <div id="divId" class="anInformationIWantToGet aClassUsedForCss"></div> 但它不起作用,我也不明白为什么。。。我错过了什么 我创建了一个测试问题的方法 我的浏览器是Firefox17。试试这个 在下面代码中更改您 var anInformationIWantToGet = div.className.replace(/(\s*(aClassUsedForC

我有一个简单的
div
,其中包含各种类属性:

<div id="divId" class="anInformationIWantToGet aClassUsedForCss"></div>
但它不起作用,我也不明白为什么。。。我错过了什么

我创建了一个测试问题的方法

我的浏览器是Firefox17。

试试这个 在下面代码中更改您

var anInformationIWantToGet  = div.className.replace(/(\s*(aClassUsedForCss)?\s*)/, '');

将g放入正则表达式中

和工作更新

如果上述内容不起作用/不被理解,则要求更多

/(\s*(aClassUsedForCss)?\s*)/
                       ^
您已将要查找的类名设置为可选,因此第一个匹配项将是字符串开头的0或更多空格

删除
和/或使其成为全局正则表达式(通过附加
g
)。

这将起作用

哎呀,我错过了更换零件。我更新了


注意替换空格。试试看


.

我们还将通过添加所需的类来更改它,并以这种方式删除剩余的类

$("#myDiv").attr("class","aClassUsedForCss");

Firefox 17很古老。你应该尽快升级。为什么不使用?@Quentin我完全同意,但不幸的是,它不在我手中…@RGraham,因为我认为我可以用1行正则表达式来升级它。若我并没有找到好的解决方案,我会在类列表上循环,当然。我的一个提示是:永远不要编写正则表达式,所有部分都是可选的。至少使用锚定,例如:
\s*(?:悬停)?\s*$
/(\s*(aClassUsedForCss)?\s*)/
                       ^
function replaceClass(){
    /* Should not output 'hover' */
   var reqdClasName = div.className.match(/(\S*)\s*hover\s*/)[1];
   div.className.replace(reqdClasName, '');
   result.innerHTML = reqdClasName;   
}
var anInformationIWantToGet  = div.className.replace(/(\s*(?:aClassUsedForCss)\s*)/, ' ').trim();
$("#myDiv").attr("class","aClassUsedForCss");