2

私はjavascriptでこのような文字列を解析しています:

[box style="a" width="b" height="c"]

これまでのところ、http://gskinner.com/RegExr/を使用すると動作し、この正規表現を使用して正常に解析されます。

/(?<=\s).+?=".+?"/

ただし、javascript でこれを行うと、エラーが発生します。

Uncaught SyntaxError: 無効な正規表現: /(?<=\s).+?=".+?"/: 無効なグループ

これはコードの一部です:

if (scOpenTag instanceof Array) {
   var params = scOpenTag[0].match(/(?<=\s).+?=".+?"/);                    
   for (var i = 0; i < params.length; i++)
      console.log(params[i]);
}

誰かが私が間違っていることを知っていますか?

4

2 に答える 2

2

単純な正規表現パターンを使用する

[\w-]+="[^"]*"
于 2012-10-27T16:45:04.080 に答える
1

JavaScriptは後読みアサーションをサポートしていません。どちら(?<=...)も機能しません(?<!...)

ただし、キー/プロパティ名/属性名/何でも-それらは形式を持っているように見えるので、単語境界アサーション(またはのいずれかに一致する)\w+からある程度のマイレージを得ることができます:\b(?<!\w)(?=\w)(?<=\w)(?!\w)

/\b\w+="[^"]+"/

追加するために編集:さらに言えば、キャプチャグループを使用し、次の代わりにを使用することで、正確な現在の機能を取得できます。params[1]params[0]

if (scOpenTag instanceof Array) {
   var params = scOpenTag[0].match(/\s(.+?=".+?")/);
   for (var i = 1; i < params.length; i++)
      console.log(params[i]);
}
于 2012-10-27T16:38:43.477 に答える