How to use regex for currency
javascript, jquery, regex
Solution
Replace `non-digit` and `non-dot` simbols by `''`, then apply `parseFloat`:
var currencyValue = parseFloat("$1,000.50".replace(/[^\d\.]/g,''));
console.log( currencyValue ) ; //1000.5
UPDATE: If your 'HTML Auto generator' generates valid currency strings, then
/\$\S+/g
regexp is enough, for extracting all currencies:
var currencies = $('#cartSummaryItem').text().match(/\$\S+/g); // ["$115.00"]
Then you could convert them to numbers for performing maths on them:
var currenciesAsNumbers = currencies.map( function(item){
return parseFloat( item.replace(/[^\d\.]/g,'') );
}); // [115]
Problem
I need to grab a price from one element and add it to another. I am using this: ``` \$\d+(?:\.\d+)? ``` Which seems to work for `$0.50`, `$1.00`, `$20.00`, `$200.00` but I hit a brick wall on `$1,000.00` and $10,000.00 (Unlikely `$10,000.00` will ever be used). The comma is tripping me up. ** Edit ** I went away for an hour to come back to heaps of answers. Before I go through them I thought I'd clarify rather than answering all comments: The platform being used auto generates the total value of items in a shopping cart. It gets rendered in a an element - this changes depending on whether a user is adding or removing items. The value is unlikely to go into 10,000.00 because the product costs are not that high. I am new to using the regex it took me long enough to get this far, hence the question. Auto generated HTML: ``` <span vertical="False" quote="False" id="catCartSummary"> <table cellspacing="0" class="cartSummaryTable"> <tbody> <tr> <td class="cartSummaryItem">3 item(s), Total: $115.00 <a href="#" class="cartSummaryLink">View Cart</a></td> </tr> </tbody> </table> </span> ``` I just need the $ value in this case $115.00 - But I need it to work for $1,000.00