如何用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");