如何使用 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 将正则表达式应用于输入?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Python 将正则表达式应用于系列中的元素 [重复]