在电子邮件输入字段中,我正在使用正则表达式检查非法字符,如下所示:
$("#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;'具有相同的键码作为句号,但目前我正在努力寻找另一种方式。
我怎样才能实现这个目标?感谢
答案 0 :(得分:2)
你的集合中有)-/
,它会创建一个与)*+,-./
匹配的范围(根据ASCII表)而不仅仅是字符)-/
。转义-
或将其放在角色类的开头或结尾,如下例所示:
[()\-/+{|}\\[\]?!*+^$<>&#~"'%=_:;] # escaped \-
[-()/+{|}\\[\]?!*+^$<>&#~"'%=_:;] # hyphen at start of class
[()/+{|}\\[\]?!*+^$<>&#~"'%=_:;-] # hyphen at end of class