Javascript 将字符串限制为逗号后的两个数字,且仅限一个逗号

Javascript 将字符串限制为逗号后的两个数字,且仅限一个逗号,javascript,regex,Javascript,Regex,下面的脚本只允许输入文本中的数字和逗号 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 = fa

下面的脚本只允许输入文本中的数字和逗号

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();
  }
}

<input type="text" name="price" onkeypress='validate(event)'>

验证函数只检查当前键,但需要检查输入元素的值。您可以使用如下模式:

/^\d+(,\d{0,2})?$/
function validate(evt, ele) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var value = ele.value + key;
  var regex = /^\d+(,\d{0,2})?$/;
  if( !regex.test(value) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}

<input type="text" name="price" onkeypress='validate(event, this)'>
/^\d+,\d{2}$/
var x = "123,456,7890";
var a = x.replace(/(,[0-9]{2})([0-9,]*)/, "$1");
这将匹配由数字序列组成的任何字符串,可以选择后跟逗号,最多两个数字

您的整个验证功能看起来有点像这样:

/^\d+(,\d{0,2})?$/
function validate(evt, ele) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var value = ele.value + key;
  var regex = /^\d+(,\d{0,2})?$/;
  if( !regex.test(value) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}

<input type="text" name="price" onkeypress='validate(event, this)'>
/^\d+,\d{2}$/
var x = "123,456,7890";
var a = x.replace(/(,[0-9]{2})([0-9,]*)/, "$1");

这将匹配由一系列数字组成的任何字符串,后跟一个逗号,后跟两个数字。开始(
^
)和停止(
$
)锚定确保匹配字符串前后不允许有其他字符。

您的验证函数将只检查当前键,但需要检查输入元素的值。您可以使用如下模式:

/^\d+(,\d{0,2})?$/
function validate(evt, ele) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var value = ele.value + key;
  var regex = /^\d+(,\d{0,2})?$/;
  if( !regex.test(value) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}

<input type="text" name="price" onkeypress='validate(event, this)'>
/^\d+,\d{2}$/
var x = "123,456,7890";
var a = x.replace(/(,[0-9]{2})([0-9,]*)/, "$1");
这将匹配由数字序列组成的任何字符串,可以选择后跟逗号,最多两个数字

您的整个验证功能看起来有点像这样:

/^\d+(,\d{0,2})?$/
function validate(evt, ele) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var value = ele.value + key;
  var regex = /^\d+(,\d{0,2})?$/;
  if( !regex.test(value) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}

<input type="text" name="price" onkeypress='validate(event, this)'>
/^\d+,\d{2}$/
var x = "123,456,7890";
var a = x.replace(/(,[0-9]{2})([0-9,]*)/, "$1");

这将匹配由一系列数字组成的任何字符串,后跟一个逗号,后跟两个数字。开始(
^
)和停止(
$
)锚定确保匹配字符串前后不允许有其他字符。

使用正则表达式替换,如下所示:

/^\d+(,\d{0,2})?$/
function validate(evt, ele) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var value = ele.value + key;
  var regex = /^\d+(,\d{0,2})?$/;
  if( !regex.test(value) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}

<input type="text" name="price" onkeypress='validate(event, this)'>
/^\d+,\d{2}$/
var x = "123,456,7890";
var a = x.replace(/(,[0-9]{2})([0-9,]*)/, "$1");

使用正则表达式替换,如下所示:

/^\d+(,\d{0,2})?$/
function validate(evt, ele) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var value = ele.value + key;
  var regex = /^\d+(,\d{0,2})?$/;
  if( !regex.test(value) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}

<input type="text" name="price" onkeypress='validate(event, this)'>
/^\d+,\d{2}$/
var x = "123,456,7890";
var a = x.replace(/(,[0-9]{2})([0-9,]*)/, "$1");