Я знаю, что это старый вопрос, но ответ CMS, похоже, имеет один крошечный недостаток: он работает, только если в формате валюты используется "." в качестве десятичного разделителя.
Например, если вам нужно работать с русскими рублями, строка будет выглядеть так:
«1 000,00 руб.»
Мое решение гораздо менее элегантно, чем CMS, но оно должно сработать.
var currency = "1 000,00 rub."; //it works for US-style currency strings as well
var cur_re = /\D*(\d+|\d.*?\d)(?:\D+(\d{2}))?\D*$/;
var parts = cur_re.exec(currency);
var number = parseFloat(parts[1].replace(/\D/,'')+'.'+(parts[2]?parts[2]:'00'));
Предположения:
- значение валюты использует десятичную запись
- в строке нет цифр, которые не являются частью значения валюты
- значение валюты содержит 0 или 2 цифры в своей дробной части *
Регулярное выражение может даже обрабатывать что-то вроде «1,999 долларов и 99 центов», хотя это не предназначенная функция и на нее не следует полагаться.
Надеюсь, это кому-нибудь поможет.