2012-04-14 20 views
0

正規表現

str = "filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#000000'); 
     background: -webkit-linear-gradient(top, black, white); 
     animation-duration: 12s;"; 

を、私は私の試合をしたいのプロパティのみ

properties = text.match(/[^;:]*:/g); 

を返されたが、それはまた、「プログラムIDを:」を返し、どうすればそれを避けることができますか?

+0

あなたは何をしようとしていますか?それに応じて、CSSパーサを使うか、単に要素のスタイルプロパティを設定するだけでよいかもしれません。 – Esailija

答えて

1

検索検索; "文字列の書式設定に応じて改行/タブを入力することもできます。

/(^|;)[^:;]*:/ 

まだ結果を少しでも整理する必要があります。

また、文字列を ";"に分割することもできます。 「:」最初の、そして上の各ビットを分割し、あなたの特性のために、それぞれの0番目のメンバーをつかむ:あなたは、文字列を終了半に分割したときに

var str = "filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#cccccc', endColorstr='#000000');background: -webkit-linear-gradient(top, black, white);animation-duration: 12s;"; 

var rules = str.split(";") 

var i, l = rules.length; 

var properties = []; 

for(i = 0; i < l; i++){ 
    properties.push(rules[ i ].split(":")[0]); //dangerous if you're not sure you'll always have a result 
} 
0

properties = text.match(/^[^;:]*:/g); 

EDITしてみてください:ここでは は、プロパティと値の間にスペースが常に存在してより良いソリューションです:ラインやA「の冒頭のため

properties = text.match(/[^ ;:]+(?=:)/g) 
+0

これは、各行に実際の行の終わりがある場合にのみ動作します。休憩に先行する「\」がないので、それは確かではありません。 – webnesto

0

が空のルールを避けるために、

分割を上それに続く内容のセミス。

var rules= str.split(/;(?=\S+)/); 

for(var i= 0, L= rules.length; i<L; i++){ 
    rules[i]= rules[i].split(':')[0]; 
} 

/* 
alert(rules)>>(Array) 
filter, background, animation-duration 
*/