从JavaScript INLINE中删除非数字或小数

时间:2011-11-15 23:01:56

标签: javascript regex

我正在尝试修改我经常使用的现有JavaScript行来格式化表单字段中的美元金额条目,以便显示分数,即使没有输入。我已经使用了多年:

<input maxlength="7" name="dollarvalue" size="8" onChange="javascript:this.value=parseFloat(this.value).toFixed(2);" />

...但如果输入除数字或小数以外的任何内容,它会中断...所以我想我可以添加str.replace()来过滤掉不允许的字符。它需要完全独立(如图所示),以便我可以根据需要轻松地将这一行onChange添加到表单字段中。我得到了下面这个,这仍然适用于数字,但不是剥离其他东西。我做错了什么?

<input maxlength="7" name="dollarvalue" size="8" onChange="javascript:this.value=parseFloat(this.value.replace('/[^0-9\.]+/g','')).toFixed(2);" />

2 个答案:

答案 0 :(得分:8)

正则表达式周围不应该有引号。你需要改变

this.value.replace('/[^0-9\.]+/g','')

this.value.replace(/[^0-9\.]+/g,'')

答案 1 :(得分:2)

你不应该引用你的正则表达式,所以整个第二行应该是:

<input maxlength="7" name="dollarvalue" size="8" onChange="javascript:this.value=parseFloat(this.value.replace(/[^0-9\.]+/g,'')).toFixed(2);" />