1

我正在尝试使用正则表达式来确保输入是数字或浮点数。如果用户输入了美元符号,我希望 javascript 将其删除并返回 true。如果用户输入逗号,则返回 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)
4

3 回答 3

1

我认为这个正则表达式可能对你有用:

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

我的意思是它将返回有效字符串(当输入有效时)或无效时返回任何内容(假)。

于 2013-08-11T14:07:01.287 回答
1

您似乎正在寻找类似的东西/^(\$?(\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');
''
于 2013-08-11T14:37:36.877 回答
0
/^\$?(\d+|\d*\.\d+)$/   

这也可能有效。

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

http://jsfiddle.net/zhTq2/

于 2013-08-11T14:15:33.097 回答