Regex仅为货币标识float或int

Regex to identify float or int only for currency

本文关键字:float int 标识 货币 Regex      更新时间:2023-09-26

我正在尝试使用regex来确保输入是数字或浮点值。如果用户输入了美元符号,我希望javascript将其删除并返回true。如果用户输入逗号,则返回false。

这就是我所尝试的(但是它总是返回false):

var validAmount = new RegExp('/[^0-9.]/g');
validAmount.test(numberAmount); 
if(!validAmount.test(parseFloat(numberAmount))){
   alert("bad Amount");
}

期望输出:

Input: 232 //output: true
Input: 1212.23 //output:true
Input: $12.23 //(remove $ sign and output:true)
Input: a23 //output:false
Input: 1,000 //(output:false)

我认为这个正则表达式可能适用于您:

amount.replace(/^'$?(['d]+'.?['d]*)$/, '$1');

我的意思是,它将返回有效的字符串(当有效输入时),或者当无效时不返回(false)。

您似乎在寻找类似/^('$?('d+('.'d+)*)?|.*)$/的东西;

> exp = /^('$?('d+('.'d+)*)?|.*)$/
> '232'.replace(exp, '$2');
'232'
> '1212.23'.replace(exp, '$2');
'1212.23'
> '$12.23'.replace(exp, '$2');
'12.23'
> 'a23'.replace(exp, '$2');
''
> '1,000'.replace(exp, '$2');
''
/^'$?('d+|'d*'.'d+)$/   

这也可能奏效。

var regex=/^'$?('d+|'d*'.'d+)$/;
alert(regex.test("232"));

http://jsfiddle.net/zhTq2/