0

我需要从以'layout-'开头的元素中删除所有类

我尝试:

var regex = new RegExp('\b' + 'layout-' + '.*?\b', 'g');
$(el)[0].className = $(el)[0].className.replace(regex, '');

但它不起作用。解决方案可能在 jQuery 中。任何想法?

4

2 回答 2

5

您在问题中发布的 RegExp 不起作用,因为\b没有转义为\\b. 因此,实际的 RegExp 正在变成/layout-.*?/g而不是/\blayout-.*?\b/g. 进行以下更改将起作用。

var regex = new RegExp('\\b' + 'layout-' + '.+?\\b', 'g');

你也可以像下面这样尝试。这会删除所有类似的类layout-X

var regex = /(\s)*(layout-.*?)(?=\s)/g; 
$('#test')[0].className = $('#test')[0].className.replace(regex, '');

演示小提琴

输入: class=sample layout-10 layout-9 sample1 slayout

输出: class=sample sample1 slayout

正则表达式解释:

\s- 任何空白字符

(layout-.*?)- 捕获所有值,例如 layout-X,其中 X 可以是任意字符任意次数

(?=\s)- 向前看下一个空格字符(意思是直到单词的结尾)


正如musefan在评论中指出的那样,var regex = /\blayout-.+?\b/g;也可以完成这项工作。

于 2013-10-21T11:02:41.800 回答
1
$("[class^='layout-']").removeAttr('class');

参考属性以选择器开始

删除属性

于 2013-10-21T10:56:32.523 回答