如何用JavaScript Regex替换className部分?

时间:2015-05-05 11:48:56

标签: javascript regex

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

<div id="divId" class="anInformationIWantToGet aClassUsedForCss"></div>

我想以编程方式获取变化的anInformationIWantToGet类,问题应该很容易,因为其他类是已知的,所以像下面这样的正则表达式应该可以完成这项工作:

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

但它不起作用,我不明白为什么......我错过了什么?

我创建了一个Fiddle来测试问题。

PS:我的浏览器是Firefox17。

5 个答案:

答案 0 :(得分:1)

试试这个 在代码下面改变你

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

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

把g放在正则表达式中。

正在更新fiddle

要求更多,如果以上不工作/理解。

答案 1 :(得分:0)

/(\s*(aClassUsedForCss)?\s*)/
                       ^

您已经创建了可选的类名,因此第一个匹配将是字符串开头的0或更多空格。

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

答案 2 :(得分:0)

这将有效

FiddleChanged

function replaceClass(){
    /* Should not output 'hover' */
   var reqdClasName = div.className.match(/(\S*)\s*hover\s*/)[1];
   div.className.replace(reqdClasName, '');
   result.innerHTML = reqdClasName;   
}

哎呀我错过了替换部分。我已经更新了

UpdatedFiddle

答案 3 :(得分:0)

请注意更换空白区域。试试this example

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

Correct example

答案 4 :(得分:0)

我们也会通过添加我们需要的类来更改它,并像这样删除剩余的类。

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

FIDDLE DEMO