Javascript 在keypress上检查正则表达式
我想创建我自己的插件(不使用任何外部库-用于学习目的)来验证用户在regex测试函数中动态键入的文本 在示例中,我使用正则表达式模式: ^.{2}$ 和javascript函数Javascript 在keypress上检查正则表达式,javascript,jquery,regex,Javascript,Jquery,Regex,我想创建我自己的插件(不使用任何外部库-用于学习目的)来验证用户在regex测试函数中动态键入的文本 在示例中,我使用正则表达式模式: ^.{2}$ 和javascript函数 $('#textbox').bind("keypress", function (event) { var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); if (!regex.test(key)) {
$('#textbox').bind("keypress", function (event) {
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
});
现在,我想在文本框中键入两个点,但在第一次按下键盘后,一个点与模式不匹配,因为事件被阻止,所以什么也没有发生
我的问题:是否可以检查当前键入的文本是否与正则表达式模式匹配 您可以尝试使用keydown,因为在文本框中显示字符之前,只要按一个键,它就会触发。因此,如果它与模式不匹配,您可以返回。您的正则表达式只接受两个点(..),但您正在测试单个字符
var regex = new RegExp("^.{2}$");
$('#textbox').bind("keypress", function (event) {
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
});
要在用户完成键入时检查当前键入的文本吗。。看
因此,本质上应该使用onkeyup,并且应该检查整个用户输入,而不仅仅是最后一个键
var alpha = /[ A-Za-z]/;
var numeric = /[0-9]/;
var alphanumeric = /[ A-Za-z0-9]/;
function validateKeypress(validChars) {
var keyChar = String.fromCharCode(event.which || event.keyCode);
return validChars.test(keyChar) ? keyChar : false;
}
HTML必须更改为onkeypress=“validateKeypress(alpha);”
注意:使用/pattern/ig更改/a/i。它只检查输入是否正确
a/a
假设您的意思是要测试输入的当前值,而不仅仅是键入的最后一个字符,您可以使用
$(this.val()
或this.value
来检索它。onkeyup()
事件就是您要查找的?-->@RoryMcCrossan是的,你是对的,但这仍然不能改变事实,第一个键入的点在键入后与正则表达式不匹配。@Baldráni同上是的,我测试单个字符,但这是我的观点,我需要如何在按下键后检查这个正则表达式片段?在第一次按键事件后,文本框值将为“.”,它与正则表达式完全不匹配,就像其他答案一样。按键或按键在这里是不相关的。因此,您的用户按下,然后输入值被清除,然后您应该检查他是否按下。再来一次?那么我想你应该把“.”的状态保存下来,在某个地方按过一次
var alpha = /[ A-Za-z]/;
var numeric = /[0-9]/;
var alphanumeric = /[ A-Za-z0-9]/;
function validateKeypress(validChars) {
var keyChar = String.fromCharCode(event.which || event.keyCode);
return validChars.test(keyChar) ? keyChar : false;
}
var in_put = document.getElementById("in_put"),
key = null;
in_put.addEventListener("keydown", match_input);
function match_input(e){
console.log("Key: "+e.key);
key = e.key;
console.log("Match: "+key.match(/a/i));//return array of match
if(key.match(/a/i)){
//code on succession.
}else{
//code on failure.
}
}