2つの数字の間に負のパーセンテージが入るスクリプトを作成しようとしています。 1つの数字が動的で、異なる通貨、小数点などを持っているので、私は正規表現が必要です。それはほとんど動作しますが、最初の2つの数字は、数字に2つの小数点(.00)を追加すると機能します。どうしてこれなの? JSFIDDLE小数点がないにもかかわらず、この正規表現がすべての数字で動作するようにする
は、HTML::
すべての数字上の出力は33
フィドルする必要があります
<div class="left">
<em class="price product-card-price">
€1.000
<span class="vatstatus">Exclusief BTW</span>
</em>
<em class="price product-card-price before">
1500
</em>
<a class="pricebubble"></a>
</div>
<div class="left">
<em class="price product-card-price">
1 000:-
<span class="vatstatus">Exclusief BTW</span>
</em>
<em class="price product-card-price before">
1500
</em>
<a class="pricebubble"></a>
</div>
<div class="left">
<em class="price product-card-price">
10,000.00SEK
<span class="vatstatus">Exclusief BTW</span>
</em>
<em class="price product-card-price before">
15000
</em>
<a class="pricebubble"></a>
</div>
<div class="left">
<em class="price product-card-price">
SEK10,000.00
<span class="vatstatus">Exclusief BTW</span>
</em>
<em class="price product-card-price before">
15000
</em>
<a class="pricebubble"></a>
</div>
スクリプト:の両方のため
$('.left').each(function() {
var frstCol = parseInt($(this).find('em.price.product-card-price').text().replace(/ /g, '').replace(/[^0-9.]|\.(?=\d{3,})/g, "").replace(/(\.\d+)+/,''), 10);
var seCol = parseInt($(this).find('em.price.product-card-price.before').text().replace(/[^0-9.]/g, ""), 10);
var result = 100 - (frstCol/seCol) * 100;
console.log("frstCol: ", frstCol, ", seCol: ", seCol);
$(this).find('a.pricebubble').text(parseInt(result)|| 0);
});
は、読み取りを持っています。 HTMLなどの壁ではなく、正規表現に問題がある場合は、正規表現をどのように使用しているか、入力を期待しているか、予期している出力を表示してください。あなたが期待しているものとは異なる結果を出すことがあります。 –