Javascript extrayant le numéro de la chaîne

J'ai un tas de chaînes extraites de html en utilisant jQuery.

Ils ressemblent à ceci:

var productBeforePrice = "DKK 399,95"; var productCurrentPrice = "DKK 299,95"; 

Je dois extraire les valeurs numériques afin de calculer la différence de prix.

(Donc, je me lève avec ≈

 var productPriceDiff = DKK 100"; 

ou juste:

var productPriceDiff = 100"; )

Quelqu'un peut-il m'aider à le faire?

Merci, Jakob

D'abord, vous devez convertir les prix des intrants des chaînes en chiffres. Soustraire ensuite. Et vous devrez convertir le résultat au format "DKK ###, ##". Ces deux fonctions devraient aider.

 var priceAsFloat = function (price) { return parseFloat(price.replace(/\./g, '').replace(/,/g,'.').replace(/[^\d\.]/g,'')); } var formatPrice = function (price) { return 'DKK ' + price.toString().replace(/\./g,','); } 

Ensuite, vous pouvez le faire:

 var productBeforePrice = "DKK 399,95"; var productCurrentPrice = "DKK 299,95"; productPriceDiff = formatPrice(priceAsFloat(productBeforePrice) - priceAsFloat(productCurrentPrice)); 

essayer:

 var productCurrentPrice = productBeforePrice.replace(/[^\d.,]+/,''); 

Edit: cela obtiendra le prix, y compris les nombres, les virgules et les périodes. Il ne vérifie pas que le format du nombre est correct ou que les nombres, les périodes, etc. sont contigus. Si vous pouvez être plus précis dans les définitions de nombres exacts que vous expcet, cela aiderait.

Essayez aussi:

 var productCurrentPrice = productBeforePrice.match(/\d+(,\d+)?/)[0]; 
 var productCurrentPrice = parseInt(productBeforePrice.replace(/[^\d\.]+/,'')); 

Cela devrait faire du productCurrentPrice le nombre réel que vous recevez (si je comprends bien votre question).