JS - 忽略小数点后的数字

时间:2016-03-23 18:22:16

标签: javascript jquery regex

所以我试图将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之外,有没有办法忽略点之后的数字?

3 个答案:

答案 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