我想从body
元素中删除一个以demo-XXX
开头的类,其中xxx
可以是任何字符且没有固定长度。
所以我可以在身体中有这样的东西
<body classs="bye demo-hello water">
我正在使用这个正则表达式/\b\s?demo-.*\b/g
:
$("body")[0].className = $("body")[0].className.replace(/\b\s?demo-.*\b/g, '');
但它正在移除demo-XXX
之后的所有类,例如water
:
<body classs="bye">
答案 0 :(得分:2)
你可以按照@nhahtdh
的说法这样做$('body').attr('class', function(_, cls){
return cls.split(/\s+/).filter(function(x){ // split
return x.indexOf("demo-") !== 0; // filter out unwanted values
}).join(" "); // join the array and return it
});
如果你想要正则表达式解决方案,你可以做
$('body').attr('class', function(_, cls){
return cls.replace(/\bdemo-\S+/g,"");
});
答案 1 :(得分:1)
您需要使用^\s
排除空格并查找1个或多个字符,因此请使用+
代替*
$("body")[0].className =$("body")[0].className.replace(/\b\s?demo-[^\s]+\b/g,'');
<强> DEMO 强>
答案 2 :(得分:0)
\b\s?demo-[a-zA-Z0-9]+\b
使用此功能。.
会在检测到\b
之前消耗所有内容。