如何使用 jQuery 将正则表达式应用于输入?

Posted

技术标签:

【中文标题】如何使用 jQuery 将正则表达式应用于输入?【英文标题】:How to apply Regular Expression to input using jQuery? 【发布时间】:2014-06-03 02:07:58 【问题描述】:

我有这个代码强制用户在输入中只输入数字:

$("#Day").keyup(function()

 var test =new RegExp( "/\D/G");
 if(test.test($("#Day").val()))
     $("#Day").val(replace("/\D/G" , ""));
);

但它让我可以输入非数字并且控制台中没有显示错误。

【问题讨论】:

为了清楚起见,该代码不会阻止某人输入数字,而是会删除任何输入的数字。 (如果用户在一个单词的中间输入,插入点会改变,这会很烦人) @KevinB 如何防止用户输入非数字? 交换它并仅在提交发生或模糊时测试该值,此时您可以显示适当的错误消息。 @majidgeek,看看我的回答 【参考方案1】:

这行得通:

JSFIDDLE:http://jsfiddle.net/4RWBU/

我以某种方式编辑了您的原始代码。我将事件类型从keyup 更改为keydown。如果我们使用keydown,我们实际上可以阻止按下的键显示,但我认为使用keyup 不可能实现(键已经显示)。

$("#Day").keydown(function(e)

  var test = /[0-9]/; //regex
  var value = String.fromCharCode(e.keyCode); //get the charcode and convert to char
  if (value.match(test))  
     return false; //dont display key if it is a number
         
);

【讨论】:

@majidgeek 它在小提琴中完美运行。检查小提琴 让用户退格,使用这个正则表达式:[0-9\b]【参考方案2】:

您可以在没有正则表达式的情况下做到这一点:

type="number" 添加到您的输入中,您应该可以正常工作。

但是,如果你想支持 IE 和 html 4 用户,你也可以这样做:

$("#Day").keyup(function () 
    var test = /\D/;
    if (test.test($(this).val())) 
        $("#Day").val($(this).val().replace(/\D/g, ""));
    
);

Demo

【讨论】:

以上是关于如何使用 jQuery 将正则表达式应用于输入?的主要内容,如果未能解决你的问题,请参考以下文章

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

使用 jQuery 防止 html 输入中的值

如何使用 Python 将正则表达式应用于系列中的元素 [重复]

Jquery 验证引擎正则表达式

JavaScript JQuery输入正则扩展InputVerifyjquery-InputVerify.js

常用的JQuery数字类型验证正则表达式整理