jQuery - 阻止用户输入字符'>'但是要完全停下来

时间:2018-03-14 16:24:43

标签: javascript jquery html regex

在电子邮件输入字段中,我正在使用正则表达式检查非法字符,如下所示:

$("#reg_email").keyup(function(event) 
{        
    var regex = /[()-/+{|}\\[\]?!*+^$<>&#~"'%=_:;]/g;

    if ($("#reg_email").val().match(regex)) 
    {
        $("#reg_email").notify("Illegal characters: \n( ) - / \\ + { } | [\ ] ? ! * + ^ $ < > & # ~ % = _ : ; '",{position:"right", className:"warn", autoHideDelay: autoHideDelay});
        this.value = this.value.replace(regex, "");
    }
});

这是标记:

<input id="reg_email" type="email" class="form-control placeholder" placeholder="" name="email" pattern="[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,3}$" required>

但是我注意到现在我无法在输入字段中输入句号,这不是我想要的,因为电子邮件地址将包含句号。我知道'&gt;'具有相同的键码作为句号,但目前我正在努力寻找另一种方式。

我怎样才能实现这个目标?感谢

1 个答案:

答案 0 :(得分:2)

你的集合中有)-/,它会创建一个与)*+,-./匹配的范围(根据ASCII表)而不仅仅是字符)-/。转义-或将其放在角色类的开头或结尾,如下例所示:

[()\-/+{|}\\[\]?!*+^$<>&#~"'%=_:;]    # escaped \-
[-()/+{|}\\[\]?!*+^$<>&#~"'%=_:;]     # hyphen at start of class
[()/+{|}\\[\]?!*+^$<>&#~"'%=_:;-]     # hyphen at end of class