0

この正規表現は、要素に不透明度がある場合はその値をキャプチャすることになっていますが、それが何をしているのか少し混乱しています。

function getOpacity(elem) {
    var filter = elem.style.filter;
    return filter ? 
    filter.indexOf("opacity=") >= 0 ? (parseFloat(filter.match(/opacity=([^)]+)/)[1]) / 100) + "" : "" : elem.style.opacity;
}

ここで捕獲が行われているようです([^)]+)。そして、その中の 1 つ以上の右括弧は無視する必要があります[^)]+。私はこれを間違っているに違いないと思います。1 つ以上の右括弧が無視されるのは? それは意味がありません。

いずれにせよ、最後+に言及した後に . があるため、正規表現が終了したよう/です。これは正規表現の終了を示していますか? その直後にキャプチャーの呼び出しがあり[1]ます。だから多分それは実際には終わっていません..?

ここで何が起こっているのかを正確に理解するための助けをいただければ幸いです。javascript忍者本の正規表現の礼儀

4

5 に答える 5

4

[^)]+は「右括弧を無視する」という意味ではなく、「右括弧以外の任意の文字をできるだけ多く (少なくとも 1 つ) 収集することを意味します。つまり、次の右括弧を閉じるまでのすべてを収集します。

于 2013-07-03T04:41:45.127 に答える
2

[^)]+- は、閉じ括弧ではない 1 つ以上の文字を意味します。

したがって、filter: alpha(opacity=50)文字列の/opacity=([^)]+)/場合、一致します50

于 2013-07-03T04:41:45.690 に答える
1

/正規表現を終了し、[1]パーツは配列の 2 番目のインデックスを取得します。(この場合は 2 番目の一致)

于 2013-07-03T04:41:53.813 に答える
1

[)]は右括弧に一致し、一方、右括弧以外のもの[^)]一致します。彼らは正反対です。閉じ括弧ではない任意の数の連続する文字に貪欲に一致します。[^)]+

于 2013-07-03T04:42:57.290 に答える
1

ほとんど正解です。 [^)]+")" 以外の文字をもう 1 つ一致させることを意味します。

はい、/正規表現の終わりを示します。

于 2013-07-03T04:42:07.943 に答える