正则表达式排除第一项

时间:2010-12-10 00:27:40

标签: javascript jquery regex

我有一个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, '');

3 个答案:

答案 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”之外的所有类。