Javascript正则表达式匹配正确的价格值

时间:2014-01-26 03:32:51

标签: javascript

以下是我的javascript代码,它只接受数字和点(。)。但如果我写123 ..... 122它仍然接受。基本上我这样做是为了价格字段验证,用户只能编写这种格式。

欲望格式:

$(currency)12345(amount).(dot only once)123(decimal)

Javascript代码:

<script type="text/javascript">
function validate(evt) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]|\./;
  if( !regex.test(key) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}
</script>

Html输入字段:

<input type='text' onkeypress='validate(event)' />

如何修复此javascript代码?
谢谢。

1 个答案:

答案 0 :(得分:0)

你的代码有两个问题:你只是在测试按键,而不是输入的值,而且正则表达式有点混乱。以下是修复方法:

JavaScript的:

function validate(toValidate){
    if(!/^\$\d+(\.\d{0,2})?$/.test(toValidate))
        alert('NOOOOO');//or do something else here
}

HTML输入:

<input type='text' oninput='validate(this.value)' />

jsfiddle