所以我试图将div的.text()
转换为可用于JS(货币转换)中的某些数学的数字。我正在收集div的文本内容,其中包含货币符号等项目以及始终跟随00的小数点
例如,如果div包含£35,000.00
,我试图让它返回35000
而不是3500000
。
我有一些只允许使用数字1-9的RegExp,因此删除了£符号,但它也取出小数点,从而将我想要的数字乘以100。
这是我的代码:
var thisDiv = $(this);
var amount = $( this ).text().replace(/[^0-9]/gi, '');
除了将变量除以100之外,有没有办法忽略点之后的数字?
答案 0 :(得分:3)
/[^0-9\.]/
这个正则表达式将保持0-9和。
但是,它也会允许像1.2.3(多点)
这样的值如果您想要更多验证,那么您可能需要采取一些步骤
var numberString = value.replace(/[^0-9\.]/gi, '');
if (isNaN(numberString )) {
console.log('invalid');
} else {
//parse number and use it
}
答案 1 :(得分:0)
您可以使用[^0-9]
否定前瞻来限制与(?!\.\d+$)
匹配的内容:
/(?!\.\d+$)[^0-9]/g
^^^^^^^^^^
请参阅regex demo
模式意味着:匹配任何非数字,如果它不是文字.
,后跟1+数字直到字符串的结尾。
var re = /(?!\.\d+$)[^0-9]/g;
var str = '£35,000.00';
var result = str.replace(re, '');
document.body.innerHTML = result;
答案 2 :(得分:0)
对Mark的答案进行扩展,您可以使用以下符号来表示小数点前后的位数:
numberString.toString().split(".")[0]; //before
numberString.toString().split(".")[1]; //after