0

私はあなたに簡単な質問があります(あなたのために、私は個人的にこれに何時間も費やしました)。CSSスタイルシートを検証するためにJavascript/JqueryでWebアプリケーションを作成しました。

Regexを使用してセレクターから複数のCSSクラス名を抽出する必要があります。私は次のようなことをしました:

var selector = this.value;
var userNewClass = selector.match(/[.]([A-Za-z_-]*)/);
alert(userNewClass.toString());

ほぼ機能していますが、コードに2つの問題があります(ここに正規表現の初心者がいます)。私が次のようなものを書いた場合:

.test:hover

それは私を返します

.test, test 

同じクラス名ですが、ドットが付いているものとドットがないものがあります。複数のクラス名でセレクターを作成する場合:

.test, .hello

同じ結果が得られます...ユーザーが同じクラスに無制限の数を持つことができることを考慮して、ドット(。)のみですべてのクラス名を取得するように正規表現(またはコード?)を変更する方法はありますか?セレクタ?

4

2 に答える 2

2

.testは完全一致でtestあり、キャプチャされたグループ(括弧内のすべて())です。また、最初のインスタンスだけでなく、すべてのインスタンスに一致するようgに、終了後に最後にを追加する必要があります。/

とは言うものの、これには正規表現は必要ない可能性が高くsplit、文字列で使用した方がよい場合があります。

'.test, .hello'.split(', ') // returns an array ['.test', '.hello']

どうしても正規表現を使用する必要がある場合は、次のことを試してください。

/\.(\w+)/g

\w+これは、リテラルに続く1つ以上の文字および/または数字のすべてのシーケンスに一致(およびキャプチャ)します.

于 2013-01-05T19:42:58.483 に答える
0

RegExp.execメソッドを使用する必要があります。

var input = ".test1.test2 .test3, .test4";

var re = /\.[\w\-]+/ig, match, matches = [];

while (match = re.exec(input)) {
  matches.push(match[0]);
}

alert(matches);

疑似クラスと他のすべての可能なCSS構文要素を解析する必要があるため、splitの使用は機能しません。

于 2013-01-05T19:55:20.743 に答える