使用jQuery将文本框输入限制为给定的正则表达式

请考虑以下文本框:

 

使用jQuery我想通过以下正则表达式将有效输入的集合限制为quantity_field

  var quantityRegexp = "^(0|[1-9]+[0-9]*)$";  

更具体地说,我想让浏览器丢弃输入到quantity_field中的任何字符,这些字符会使文本字段的值不符合给定的正则表达式。 (当然也可以在服务器端进行相应的检查。)

例子:

  • 如果用户键入“foo 234”,则只在文本框中输入“234”。
  • 如果用户键入“001230”,则仅在文本框中输入“1230”。
  • 如果用户键入“foo1bar”,则只在文本框中输入“1”。

问题: 使用jQuery实现这一目标的最简单方法是什么?

不是你的问题的答案(因为我不知道jQuery),但正则表达式^[1-9]*[0-9]*$可能没有你想象或想的那样。 它匹配空字符串,但也匹配000000类的数字。 我希望你不要那样,因为你的第一个字符类[1-9]显然忽略了零。 我认为你应该将第一个*改为+^[1-9]+[0-9]*$ 。 但是,该正则表达式将拒绝(单个)数字0 。 如果你想包含它,你应该做: ^(0|[1-9]+[0-9]*)$

jQuery Constrain插件允许“对文本框施加灵活约束”并接受正则表达式。 看这个演示 。

如果您不知道用户要键入多少个字符(并且只想将它们限制为数字),那么jQuery Validation插件是您最好的选择。

 $('form.to-validate').validate({ rules: { quantity: { digits: true } } }); 

这只会允许用户输入数字。 如果你知道这个人要键入多少个字符,那么我还建议使用jQuery的Masked Input插件 ,这将为用户提供一个很好的视觉指示,告诉他们需要输入什么,并防止他们输入你做的字符不想在外地。

如果你不仅仅是数字并且必须检查正则表达式,那么这篇文章有一个方法可以为jQuery Validation Plugin添加一个自定义validation方法,它可以得到你想要的东西。

希望有所帮助!

我建议你让用户提供他想要的东西,然后对提交表格进行validation。 (当然,您仍然必须检查服务器端,因为他可以轻松地禁用或更改javascriptvalidation代码)

有关validation,请查看

jQueryvalidation插件

定义一个全局变量“oldVal”(下面没有描述),它包含最后一个已知的好值。 绑定到输入字段的keydown操作:

  

这应该让你开始