在keypress上检查正则表达式

时间:2015-08-06 10:05:43

标签: javascript jquery regex

我想创建自己的插件(不使用任何外部库 - 用于学习目的)来验证用户在正则表达式测试函数中动态输入的文本。

在示例中,我有正则表达式模式:

  

^。{2} $

和javascript功能

$('#textbox').bind("keypress", function (event) {
    var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
    if (!regex.test(key)) {
        event.preventDefault();
        return false;
    }
});

现在,我想在文本框中键入两个点,但是在第一次按键被触发后,一个点与模式不匹配,因为事件被阻止,没有任何事情发生。

我的问题:是否可以检查当前键入的文本是否与正则表达式匹配?

5 个答案:

答案 0 :(得分:2)

你的正则表达式只接受两个点(..),但你正在测试一个字符!

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;
    }
});

当用户完成输入时,想要检查当前键入的文本吗? ..看HERE

答案 1 :(得分:0)

您可以尝试keydown,因为只要您按一个键并且在文本框中显示字符之前它就会触发。因此,如果它与模式不匹配,您可以退回。

答案 2 :(得分:0)

$('#textbox').bind("keyup", function (event) {
    var user_input = getElementById ("your_input_id_here");
    if (!regex.test(user_input)) {
        return false;
    }
});

所以,基本上你应该使用onkeyup而你应该检查整个用户输入,而不仅仅是最后一个键

答案 3 :(得分:0)

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);”

答案 4 :(得分:0)

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.
    }
}
  

注意:用/ pattern / ig更改/ a / i。它只检查输入是   a / A。