1
var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,

html: function( value ) {
        if ( value === undefined ) {
            return this[0] && this[0].nodeType === 1 ?
                this[0].innerHTML.replace(rinlinejQuery, "") :
                null;

        // See if we can take a shortcut and just use innerHTML
        }

のようなコードに一致しますjQuery11="11"か?

そして、なぜそれが関数で必要なのhtml()ですか?

4

1 に答える 1

0

わかりました。最初に、jQuery\d+「jQuery」の後に 1 つ以上の数字が続きます (\dは と同じ[01-9]です)。

次に、="これは単なるリテラルであるため、「jQuery」、少なくとも 1 つの数字、「=」の順に一致します。

次に、(...|...)コンストラクトは Or であるため、垂直バーの前の式|、またはその後の式のいずれかに一致します。この場合、これらの式は\d+andnullであるため、クエリは、「jQuery」、少なくとも 1 つの数字、「="」、および少なくとも 1 つの数字または文字列「null」のいずれかで構成される任意の文字列に一致します。"文字通り。

式自体の一部として残っているのは、左?:括弧の直後にあるものだけです。通常、正規表現の括弧内はすべて保存されるため、参照している一致を参照する番号を使用して置換文字列で参照できます$nnこの?:場合、括弧を開始する は、それが起こらないようにするため、括弧を使用して Or のオプションをグループ化することができ、一致の値を記憶するために時間やメモリを浪費する必要はありません。

最後に、正規表現はスラッシュ/で囲まれておりg、これにはグローバル検索を示すスイッチがあります。

つまり、「jQuery」、1 つまたは複数の数字、「="」、1 つまたは複数の数字、または「null」、「"」です。

2 番目の質問に答えると、はい、このパターンはその文字列に一致します。

残念ながら、jQuery の html 関数がその特定の文字列を削除する必要がある理由this[0].innerHTML(replace関数が行っていること) はわかりませんが、コメントに基づいて、文字列を使用してinnerHTML有効かどうかをテストしているように見えます。機能しますか(すべてのブラウザで機能するわけではありません)?

于 2012-07-06T17:57:54.323 に答える