在我的网页中,我有一个货币格式的总数,可以是正数或负数。
Example $5.50 or $(5.50).
该值只不过是跨度标记中包含的文本。我正在尝试读取该值并将其转换为 js 中的数值,然后我可以对其执行数学计算。
Example $5.50 -> 5.50 and $(5.50) -> -5.50
我编写了以下正则表达式脚本来处理将负货币值转换为数值
var regex = /^\$*?\((\d+(\.)?(\d+)?)\)$/
我有以下方法来处理检索和转换值。
//retrieve value from template
$.fn.fieldVal = function () {
var val;
if ($(this).is(':input')) {
val = $(this).val();
} else {
val = $(this).text();
}
return convertCurrencyToNumeric(val);
};
//convert currency to numeric value
function convertCurrencyToNumeric(n) {
var regex = /^\$*?\((\d+(\.)?(\d+)?)\)$/
n = n.replace(/[^0-9-\.]/g, '');
if(isNumber(n)) {
n = parseFloat(n);
return n;
}
return 0;
}
//test if numeric
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
我不清楚如何首先测试该值是否为负,其次如果为负,则将该值替换为正则表达式结果。