まず、「 HTML を Regex で解析しないでください」という投稿にリンクしないでください :)
私は次の HTML を持っています。これは、さまざまな通貨 (税込みおよび税抜) で価格を表示するために使用されます。
<span id="price_break_12345" name="1">
<span class="price">
<span class="inc" >
<span class="GBP">£25.00</span>
<span class="USD" style="display:none;">$34.31</span>
<span class="EUR" style="display:none;">27.92 €</span>
</span>
<span class="ex" style="display:none;">
<span class="GBP">£20.83</span>
<span class="USD" style="display:none;">$34.31</span>
<span class="EUR" style="display:none;">23.27 €</span>
</span>
</span>
<span style="display:none" class="raw_price">25.000</span>
</span>
AJAX 呼び出しは、上記の HTML の複数のコピーを含む単一の HTML 文字列を返しますが、価格はさまざまです。私が正規表現と一致させようとしているのは次のとおりです。
- 上記の HTML の各ブロック (前述のように、戻り文字列で複数回発生します)
name
一番外側の属性の値span
私がこれまでに持っているのはこれです:
var price_regex = new RegExp(/(<span([\s\S]*?)><span([\s\S]*?)>([\s\S]*?)<\/span><\/span\>)/gm);
console && console.log(price_regex.exec(product_price));
発生する価格分岐ごとに最初の価格分岐に 1 回一致します (つまり、 があり、name=1
3回一致する場合。name=5
name=15
name=1
どこで間違っていますか?