我有一个div,我试图在
上运行正则表达式<div class="module-header-content module-default">
我正在使用以前工作的替换操作,但是现在我已经添加了module-header-content类,这会成为问题
replace(/module-\w+/gi, ' ');
我需要一个正则表达式来删除模块的所有实例 - 除了module-header-content
任何帮助。
由于
整个电话:
var $target = $(this).parent().parent().parent().parent();
//// Removes all module-xxxx classes
var classes = $target[0].className.replace(/module-\w+/gi, '');
答案 0 :(得分:5)
你需要一个消极的向前看。
module-(?!header-content)\w+
答案 1 :(得分:2)
扩展masher's answer,许多程序员都知道使用括号来获取正则表达式中的匹配,但是非常有用的非匹配括号并不是众所周知的。
/(foo)/
将匹配foo
并将其存储在matches数组中。但是如果你不想存储匹配怎么办?在这种情况下,您可以在括号内使用?:
:/(?:foo)/
。这将匹配模式,但不会将其存储在matches数组中。
您还可以使用?!
搜索除括号内的内容以外的任何内容,以便/(?!foo)/
匹配“foo”以外的任何内容。如果您想存储匹配项,请使用/[^(foo)]/
。
是的,正则表达很精彩。
答案 2 :(得分:2)
试试这个:
str = "module-header-content module-default module-default-foo module-default-foo-bar";
str.replace(/module(?!-header)(-\w+)*/gi, '');
它将获得除“module-header-content”之外的所有类。