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

Javascript正则表达式以匹配正确的价格值,javascript,Javascript,下面是我的javascript代码,它只接受数字和点(.)。但如果我写123….122,它仍然可以接受。基本上,我这样做是为了价格域验证,用户只能写这种格式 渴望格式: $(currency)12345(amount).(dot only once)123(decimal) <script type="text/javascript"> function validate(evt) { var theEvent = evt || window.event; var key

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

渴望格式:

$(currency)12345(amount).(dot only once)123(decimal)
<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>
<input type='text' onkeypress='validate(event)' />
Javascript代码:

$(currency)12345(amount).(dot only once)123(decimal)
<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>
<input type='text' onkeypress='validate(event)' />

功能验证(evt){
var theEvent=evt | | window.event;
var key=theEvent.keyCode | | theEvent.which;
key=String.fromCharCode(key);
var regex=/[0-9]\./;
如果(!正则表达式测试(键)){
theEvent.returnValue=false;
如果(theEvent.preventDefault)theEvent.preventDefault();
}
}
Html输入字段:

$(currency)12345(amount).(dot only once)123(decimal)
<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>
<input type='text' onkeypress='validate(event)' />

如何修复此javascript代码?

谢谢

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

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)' />


所以您希望它匹配,例如,
$845.47
?@Markasoftware是的,这是我的货币格式。您只是测试他们按的键。你需要测试整个系统input@Markasoftware谢谢你的建议。@Markasoftware,那么如果我使用它,它会工作吗?var regex=/^(\d*([,])(?=\d{3}))?\d+((?!\2)[,]\d\d)?$/;它不接受$(美元),并且在键入数字时显示“Nooo”。@Babu无论何时键入密钥,它都会根据正则表达式对其进行测试。如果不匹配,则显示警报。键入$,单击ok,然后键入5(现在应该是$5),并且没有警报,这意味着它已通过。我会修改小提琴使它更有用谢谢你的努力。你测试过我上传的脚本吗?只能键入“数字”值。您不能键入任何字母字符。因此,当用户键入与我的格式字符串匹配的内容时,此javascript验证应该有效。。。