Javascript 删除CSS选择器并将其删除';如有需要,请提供相关属性

Javascript 删除CSS选择器并将其删除';如有需要,请提供相关属性,javascript,css,regex,mootools,css-selectors,Javascript,Css,Regex,Mootools,Css Selectors,我正在尝试删除特定的CSS选择器,如果属性列表中没有更多的选择器,那么脚本将删除它 我能够让脚本的一部分正常工作: 代码如下: $$('button')[0].addEvent('click', function(){ var css = document.id('css').get('text'); var newCss = css.replace(/(\n|\r|\s\s)/g, "") .replace(/(,\s*body\s*(?={)|,\s*body\s*(?=,)|body\

我正在尝试删除特定的CSS选择器,如果属性列表中没有更多的选择器,那么脚本将删除它

我能够让脚本的一部分正常工作:

代码如下:

$$('button')[0].addEvent('click', function(){

var css = document.id('css').get('text');

var newCss = css.replace(/(\n|\r|\s\s)/g, "")
.replace(/(,\s*body\s*(?={)|,\s*body\s*(?=,)|body\s*,|,\s*head\s*(?={)|,\s*head\s*(?=,)|head\s*,)/gi, "")
.replace(/(body\s*(?={)|head\s*(?={))/gi, "")
.replace(/(^\{[^}]*?\}|\}\s*\{[^}]*?\})/gim, "");

document.id('cleancss').set('text', newCss);

});
问题是,如果我删除换行符,我编写的脚本将无法删除与任何选择器无关的属性

如果我让线断开,它就会工作

此外,我想知道,如果我的代码是好的,从程序员是与正则表达式好


非常感谢您的帮助。

在上次替换中,您使用的是多行标志。如果你只有一行,在第一次更换后就这样做了,那就不行了。因此,让我们先保留换行符,然后在移除选择器后移除它们

您还可以稍微简化正则表达式。使用
x(?=a | b)
代替
x(?=a)| x(?=b)
。您也不需要惰性匹配
[^\}]*?

下面是一个工作示例。为清楚起见,我只删除了
主体
选择器

$$('button')[0]。添加事件('click',函数(){
var css=document.id('css').get('text');
var newCss=css
//将多个选项卡或空格替换为一个
.替换(/(|\t)+/g,“”)
//删除行开头的空格
.替换(/(^\s)/gm,“”)
//删除选择器列表中的正文
.replace(/(,\s*body\s*(?={|,)| body\s*,)/gi,”)
//取下尸体{
.replace(/(body\s*(?={))/gi,“”)
//删除不带选择器的规则
.replace(/[\n\r]+\{[^\}]*\}/g,“”)
//删除换行符
.替换(/[\n\r]+/g,”);
document.id('cleancss').set('text',newCss);
});

您可以通过删除
{
或在
之后:

我添加了标签
mootools
,就像你在使用它一样。你能给出每个标签的输入和所需输出的例子吗?有换行符:没有换行符:这是你的插件吗?我想,自从你在forge上发布以来,你已经解决了你的问题-只注意到它是r在我的baseBox插件之后:)实际上我还没有解决这个问题。。。