除了服务器端验证之外,我想对电子邮件输入字段进行一些客户端验证(javascript / jquery),仅接受其地址长度至少为3个字符且其tld至少为2个字符的电子邮件。
截至目前,我正在检查整个电子邮件:
HTML:
<input type="email" name="email" placeholder="E-Mail" class="form-control" id="chatemail">
的javascript:
var re_email = new RegExp(/^[a-zA-Z0-9\_\.\-]+@[a-zA-Z0-9\-]+(?:\.[a-zA-Z]+)$/);
var is_email = re_email.test($('#chatemail').val());
// and its length like this:
$('#chatemail').val().length > 5
但另外如何查看电子邮件的结尾,例如: @ gmx.de
......'gmx'长度至少为3位,'de'长度至少为2位?所以我不想要的是有人可以输入@ g.d或@ gm.c ...以及类似的东西......
我试图拆分正则表达式...但我的尝试不起作用......
var re_email_01 = /^[a-zA-Z0-9\_\.\-]$/;
var re_email_02 = /^@[a-zA-Z0-9\-]$/;
var re_email_03 = /^(?:\.[a-zA-Z]+)$/;
var re_email = new RegExp(re_email_01+'+'+re_email_02+'+'+re_email_03);
我也试过了......
var re_email = new RegExp(/^[a-zA-Z0-9\_\.\-]+@[a-zA-Z0-9\-]{3,}+(?:\.[a-zA-Z]{2,}+)$/);
答案 0 :(得分:1)
您的电子邮件正则表达式非常严格。回答这个问题,你可以重新编写你的模式,以满足你的要求:
var re_email = /^[-.\w]+@(?![^.]{0,2}\.[a-zA-Z]{2,}$)([-a-zA-Z0-9]+\.)+[a-zA-Z]{2,}$/;
请参阅regex demo
你不应该在限制量词(+
构造)之后添加{min,max}
,JS正则表达式不支持像Java或PCRE这样的占有量词,它是一个无效的构造。此外,不需要将new RegExp
与静态模式一起使用,只需使用正则表达式文字。
这里的一个重要部分是(?![^.]{0,2}\.[a-zA-Z]{2,}$)
否定前瞻:如果域部分除了点之外只有0到2个字符,然后是一个点和2个或更多字母,它就会失败。
另请注意,[a-zA-Z0-9_]
与JS regex中的\w
匹配,当您将-
放在字符类的开头时,您无需将其转义为解析为字面连字符。
模式详情:
^
- 字符串开头[-.\w]+
- 一个或多个-
,.
或字母数字/ _
符号@
- @
符号(?![^.]{0,2}\.[a-zA-Z]{2,}$)
- 除了.
之后不能有0到2个字符,后跟.
,然后在{{1}右边的字符串末尾有2个或更多字母1}} @
- 一个或多个([-a-zA-Z0-9]+\.)+
或字母数字字符序列后跟一个点-
- 2个或更多ASCII字母[a-zA-Z]{2,}
- 字符串结束。答案 1 :(得分:0)
我使用html5内置函数进行电子邮件验证:
function emailValid(emailAddy){
var email = document.createElement('input');
email.type = 'email';
email.value = emailAddy;
return email.validity.valid;
};
alert (emailValid('ttt@gmx.de'));
alert (emailValid('tt t@gm x.de'));
答案 2 :(得分:0)
您可以根据自己的要求使用以下正则表达式:
/^[.-\w]+@[\w\-]{3,}((.)\w{2,})+$/
这允许在电子邮件地址的第一部分中使用字母,数字和( - ,_ ,.),并确保在'@'之后至少有3个字符,然后在点(。)之后至少为2。这个正则表达式还负责确保后续的点(。)之后还有2个字符,就像你在规则中提到的一样。
样品:
// Matching
abc@gmx.dcom
newemail@gmail.com
8-d_873@abc.co
abc.deg@new.co
abc@9mail.co
d@mail.com
abc.deg@new.co.uk
// Not matching
abc@gmc.d
abc@gm.de
d@ma.com
d@
9@99.213
first.name@gmx...de