错误:javascript键的整数格式无效

错误:javascript键的整数格式无效,javascript,jquery,regex,Javascript,Jquery,Regex,例: -->错误无法自动将-123-12替换为-12312或123-替换为123,如何修复 我希望这是一个数字(允许0-9和-) 123--无效!但是-123是有效的 注意,RegExp/[^-?\d]/g允许?字符。如果预期结果允许0-9和-作为第一个字符,则可以使用[^\d+]而不使用?字符,前提是值.length为1且索引0处的值为-返回索引0处的值,并使用.slice()使用参数1,替换非-或\d+的字符,否则使用/(-)$/g替换输入末尾的-字符 $(文档)。在(“更改、键入”、“输入

例:

-->错误无法自动将-123-12替换为-12312或123-替换为123,如何修复

我希望这是一个数字(允许0-9和-)

123--无效!但是-123是有效的

注意,
RegExp
/[^-?\d]/g
允许
字符。如果预期结果允许
0-9
-
作为第一个字符,则可以使用
[^\d+]
而不使用
字符,前提是值
.length
1
且索引
0
处的值为
-
返回索引
0
处的值,并使用
.slice()
使用参数
1
,替换非
-
\d+
的字符,否则使用
/(-)$/g
替换输入末尾的
-
字符

$(文档)。在(“更改、键入”、“输入[type=text])上,更新数量)

可以删除
“change,keyup”
处的逗号和选择器
“input[type=text])”
处的额外

函数更新\u数量(){
$(this).val(函数(x,val){
返回val.length==1&&val[0]==“-”
?val[0]+val.slice(1)。替换(/[^\d+]/g,“”)
:val.replace(/(-)$/g,“”)
});
}
$(文档)。在(“更改键控”、“输入[type=text]”上,更新数量)

这似乎就是您要寻找的:


虽然我个人会在
change
blur
上做,而不是在用户进入时剥离。或者更好的是,返回一个可见错误并阻止表单提交,而不是自动替换。我真的很讨厌做这种事情的表单字段。在我看来,这会造成糟糕的用户体验。

你想做什么?在
javascript
中有语法错误。预期的结果是什么?是否要将
作为接受的输入?是否
123---
有效输入?123----无效!但是-123有效吗?我想你要找的是
/^-?[0-9]+$/
而且我不建议你在
键盘上这样做。应该在
change
blur
<input type="text" name="quantity">
function update_quantity() {
   $(this).val($(this).val().replace(/[^-?\d]/g, ''));
}
$(document).on("change, keyup", "input[type=text])", update_quantity);
123 -> valid
-123 -> valid
123- -> invalid
-1-12-123 -> invalid
-123-12 -> invalid
$(document).ready(function() {
  $('input[name=quantity]').on('keyup',function() {
    var v = $(this).val();
    if (!v.match(/^-?[0-9]*$/))
      $(this).val(v.replace(/(?!^-)[^0-9]/g,''));
  });
});