RegEx最小化CSS

我有一个海峡转发聚合器/最小化/ cacher我写在node.js。 现在工作得很好。

不过,我想知道是否有任何方法来改善我的最小化正则expression式调用。 有些评论不是完全从CSS中分离出来的,我注意到其他几个打嗝。

另外,考虑到我的能力与正则expression式,我可能能够做到这一点在一半的电话。 🙂

任何build议将不胜感激。

谢谢。

function minimizeData( _content ) { var content = _content; content = content.replace( /(\/\*.*\*\/)|(\n|\r)+|\t*/g, '' ); content = content.replace( /\s{2,}/g, ' ' ); content = content.replace( /(\s)*:(\s)*/g, ':' ); content = content.replace( /(\s)+\./g, ' .' ); content = content.replace( /(\s|\n|\r)*\{(\s|\n|\r)*/g, '{' ); content = content.replace( /(\s|\n|\r)*\}(\s|\n|\r)*/g, '}' ); content = content.replace( /;(\s)+/g, ';' ); content = content.replace( /,(\s)+/g, ',' ); content = content.replace( /(\s)+!/g, '!' ); return content; } 

 function minimizeData( _content ) { var content = _content; content = content.replace( /\/\*(?:(?!\*\/)[\s\S])*\*\/|[\r\n\t]+/g, '' ); // now all comments, newlines and tabs have been removed content = content.replace( / {2,}/g, ' ' ); // now there are no more than single adjacent spaces left // now unnecessary: content = content.replace( /(\s)+\./g, ' .' ); content = content.replace( / ([{:}]) /g, '$1' ); content = content.replace( /([;,]) /g, '$1' ); content = content.replace( / !/g, '!' ); return content; } 

应该更清楚一点,避免重复。 第一次更换之后,只剩下空间了。 第二次更换后,只有单个空格。 这使得以下replace更容易。

解释注释去除正则expression式(这里显示为一个纯粹的详细正则expression式,没有分隔符):

 /\* # Match /* (?: # Match (any number of times)... (?!\*/) # ... as long as we're not right before a */: [\s\S] # any character (whitespace or non-whitespace). )* # (End of repeated non-capturing group) \*/ # Match */ 
Interesting Posts