如何在JavaScript中验证电子邮件地址
JavaScript中是否有验证电子邮件地址的正则表达式?JavaScript可以匹配正则表达式:如何在JavaScript中验证电子邮件地址,javascript,regex,validation,email,email-validation,Javascript,Regex,Validation,Email,Email Validation,JavaScript中是否有验证电子邮件地址的正则表达式?JavaScript可以匹配正则表达式: emailAddress.match( / some_regex /); /\S+@\S+\.\S+/ 下面是电子邮件的正则表达式: ^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])* "\x20*)*(?<angle><))?((?!\.)(?>
emailAddress.match( / some_regex /);
/\S+@\S+\.\S+/
下面是电子邮件的正则表达式:
^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|"((?=[\x01-\x7f])[^"\\]|\\[\x01-\x7f])*
"\x20*)*(?<angle><))?((?!\.)(?>\.?[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+)+|"((?=[\x01-\x
7f])[^"\\]|\\[\x01-\x7f])*")@(((?!-)[a-zA-Z\d\-]+(?<!-)\.)+[a-zA-Z]{2,}|\[(((?(?<
!\[)\.)(25[0-5]|2[0-4]\d|[01]?\d?\d)){4}|[a-zA-Z\d\-]*[a-zA-Z\d]:((?=[\x01-\x7f])
[^\\\[\]]|\\[\x01-\x7f])+)\])(?(angle)>)$
^((?>[a-zA-Z\d!\$%&'*+\-/=?^ `{124}~+\ x20*.\”((?=[\x01-\x7f])[^“\]\\\[\x01-\x7f])*
“\x20*)*(?\.?[a-zA-Z\d!\$%&'*+\-/=?^ `{124;}+)+”((?=[\ x01-\x
7f])[^“\\]\[\x01-\x7f])*”@(((?!-)[a-zA-Z\d\-]+(?)$
使用可能是最好的方法。您可以看到一系列测试(取自)
功能验证电子邮件(电子邮件){
常数re=/^([^()[\]\\,;:\s@“]+(\.[^()[\]\,;:\s@“]+)*)(“+”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.]);([a-zA Z-0-9]++];
返回re.test(字符串(email.toLowerCase());
}
下面是接受unicode的常规表达式的示例:
const re = /^(([^<>()[\]\.,;:\s@\"]+(\.[^<>()[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
const re=/^(([^()[\]\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)([^()[\]\,;:\s@\“]+\)+[^()[\]\,;:\s@\“]{2,}$/i;
但是请记住,我们不应该只依赖于JavaScript验证。JavaScript可以很容易地被禁用。这也应该在服务器端进行验证
以下是上述措施的一个实例:
功能验证电子邮件(电子邮件){
常数re=/^([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\“+\”)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.++]124;([a-zA Z-0-9]+-Z].-/];
返回重新测试(电子邮件);
}
函数验证(){
const$result=$(“#result”);
const email=$(“#email”).val();
$result.text(“”);
如果(验证邮件(电子邮件)){
$result.text(电子邮件+“有效:”);
$result.css(“颜色”、“绿色”);
}否则{
$result.text(电子邮件+”无效:(“”);
$result.css(“颜色”、“红色”);
}
返回false;
}
$(“验证”)。在(“单击”,验证);
输入电子邮件地址:
function looksLikeMail(str) {
var lastAtPos = str.lastIndexOf('@');
var lastDotPos = str.lastIndexOf('.');
return (lastAtPos < lastDotPos && lastAtPos > 0 && str.indexOf('@@') == -1 && lastDotPos > 2 && (str.length - lastDotPos) > 2);
}
验证
哇,这里有很多复杂性。如果您只想捕捉最明显的语法错误,我会这样做:
^\S+@\S+$
if (reg.test(/@/))
它通常捕获用户犯下的最明显的错误,并确保表单基本正确,这就是JavaScript验证的全部内容。当您决定使用正则表达式验证电子邮件时,您必须了解一些事情:。一旦您接受了这一点,就有许多实现但这可以让你走到一半 然而,简而言之,要绝对、肯定地确认用户输入的内容实际上是电子邮件,唯一的方法就是发送一封电子邮件,看看会发生什么。除此之外,一切都只是猜测。这是从
很难让电子邮件验证程序100%正确。唯一正确的方法是向帐户发送一封测试电子邮件。也就是说,有一些基本检查可以帮助确保您得到合理的信息 需要改进的地方有: 不要使用新的
RegExp
,只需像这样写出RegExp
:
^\S+@\S+$
if (reg.test(/@/))
其次,检查以确保句号在@
符号之后,并确保@
符号和句号之间有字符。仅为完整起见
官方标准称为。它描述了有效电子邮件地址必须遵守的语法。您可以(但不应-)使用以下正则表达式实现它:
emailAddress.match( / some_regex /);
/\S+@\S+\.\S+/
以下代码:(以下以下简称::[a-z0-9-9-10-10-10-10-10-10 10-9-9-9-9-a-z0-9-10-10-9-10-10-10-9-10-10-10-10-10-9-9-9-9-9-9-10-10-5.[以下以下以下以下以下简称::::(以下以下以下以下以下简称:::(以下以下简称::::[以下以下简称::[a-a-a-a-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-10-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-9-10-9-9-9-9-9-9-9-9-9-9-9-9-9-10-10-10-9-10-10-10-10[a-z0-9-]*[a-z0-9])?\]+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\[(?:(?:(?:25[0-5]| 2[0-4][0-9]|[01]?[0-9][0-9]|]\]){3}(?:25[0-5]| 2[0-4][0-9]|[0-9]|[a-Z09]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\]
(…)如果我们省略使用双引号和方括号的语法,我们将得到RFC 2822更实际的实现。它仍将匹配当前实际使用的99.99%的电子邮件地址。
[a-z0-9!#$%&'*+/=?(?:\.[a-z0-9!#$%&'*+/=?(?:[a-z0-9!(?:[a-z0-9-]*[a-z0-9])+[a-z0-9](?:[a-z0-9-]*[a-z0-9])+[a-z0-9](?:[a-z0-z0-9-]
您可以做的进一步更改是允许任何两个字母的国家代码顶级域,并且只允许特定的通用顶级域。此正则表达式过滤虚拟电子邮件地址,如asdf@adsf.adsf
。在添加新的顶级域时,您需要对其进行更新
[代码>[a-z0-9-9 9.5.[代码>[a-z0-9-9.[代码>[代码>[a-z0-9.9.[代码>[a-z0-9-9.[代码>[a-z0-9.[码码码码>.[码码码>.[码10-10-5-5-10-5-10-5-10-5-10-5-5-5-5-5-5-5-5-5-5-5.----:::::::[a-10-9-10-10-10-9-10-10-9-10-10-10-10-9-10-9-10-9-9.....-----::::::::::::[10-10-10-10-10-9-9-10-10-9-9-10-10-9-9-10-9-9-9..|博物馆)\b
因此,即使遵循官方标准,仍然需要做出权衡。不要盲目地从在线图书馆或论坛复制正则表达式。始终使用您自己的数据和应用程序测试它们。
Emphasis mine这里有一个关于使用正则表达式验证电子邮件地址的非常好的讨论;“” 以下是与JavaScript兼容的当前顶级表达式,仅供参考:
/^[-a-z0-9~!$%^&*_=+}{\'?]+(\.[-a-z0-9~!$%^&*_=+}{\'?]+)*@([a-z0-9_][-a-z0-9_]*(\.[-a-z0-9_]+)*\.(aero|arpa|biz|com|coop|edu|gov|info|int|mil|museum|name|net|org|pro|travel|mobi|[a-z][a-z])|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})?$/i
显然,就是这样:
/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)$/i
摄于10月1日至10日
但是,当然,这忽略了国际化。符合RFCs的电子邮件地址正确验证不是单行正则表达式可以实现的。我在PHP中找到的一篇文章提供了最好的解决方案。显然,它已经移植到Java。我认为函数太复杂,无法移植到Javad在JavaScript.JavaScript/node.js端口中使用: 一个好的做法是在客户端验证数据,但在服务器上再次检查验证。记住这一点,您只需在客户端上检查字符串是否看起来像有效的电子邮件地址,然后在服务器上执行严格的检查 下面是我用来检查的JavaScript函数
function isPossiblyValidEmail(txt) {
return txt.length > 5 && txt.indexOf('@')>0;
}
anystring@anystring.anystring
/\S+@\S+\.\S+/
/^[^\s@]+@[^\s@]+$/
function isEmail(email) {
return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))$/i.test(email);
}
if (isEmail('youremail@yourdomain.com')){ console.log('This is email is valid'); }
^([a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)$
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?
var emailCheck=/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
console.log( emailCheck.test('some.body@domain.co.uk') );
function validateEmail(value) {
var input = document.createElement('input');
input.type = 'email';
input.required = true;
input.value = value;
return typeof input.checkValidity === 'function' ? input.checkValidity() : /\S+@\S+\.\S+/.test(value);
}
<form name="validation" onSubmit="return checkbae()">
Please input a valid email address:<br />
<input type="text" size=18 name="emailcheck">
<input type="submit" value="Submit">
</form>
<script language="JavaScript1.2">
var testresults
function checkemail(){
var str = document.validation.emailcheck.value
var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
if (filter.test(str))
testresults = true
else {
alert("Please input a valid email address!")
testresults = false
}
return (testresults)
}
</script>
<script>
function checkbae(){
if (document.layers || document.getElementById || document.all)
return checkemail()
else
return true
}
</script>
function check_email(val){
if(!val.match(/\S+@\S+\.\S+/)){ // Jaymon's / Squirtle's solution
// Do something
return false;
}
if( val.indexOf(' ')!=-1 || val.indexOf('..')!=-1){
// Do something
return false;
}
return true;
}
check_email('check@thiscom'); // Returns false
check_email('check@this..com'); // Returns false
check_email(' check@this.com'); // Returns false
check_email('check@this.com'); // Returns true
function checkEmail(emailAddress) {
var sQtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]';
var sDtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]';
var sAtom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+';
var sQuotedPair = '\\x5c[\\x00-\\x7f]';
var sDomainLiteral = '\\x5b(' + sDtext + '|' + sQuotedPair + ')*\\x5d';
var sQuotedString = '\\x22(' + sQtext + '|' + sQuotedPair + ')*\\x22';
var sDomain_ref = sAtom;
var sSubDomain = '(' + sDomain_ref + '|' + sDomainLiteral + ')';
var sWord = '(' + sAtom + '|' + sQuotedString + ')';
var sDomain = sSubDomain + '(\\x2e' + sSubDomain + ')*';
var sLocalPart = sWord + '(\\x2e' + sWord + ')*';
var sAddrSpec = sLocalPart + '\\x40' + sDomain; // complete RFC822 email address spec
var sValidEmail = '^' + sAddrSpec + '$'; // as whole string
var reValidEmail = new RegExp(sValidEmail);
return reValidEmail.test(emailAddress);
}
<input type="email"/>
email.indexOf("@") > 0
/^(?:[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+\.)*[\w\!\#\$\%\&\'\*\+\-\/\=\?\^\`\{\|\}\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!\.)){0,61}[a-zA-Z0-9]?\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\[(?:(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\.){3}(?:[01]?\d{1,2}|2[0-4]\d|25[0-5])\]))$/
var emailID = document.forms["formName"]["form element id"].value;
atpos = emailID.indexOf("@");
dotpos = emailID.lastIndexOf(".");
if (atpos < 1 || ( dotpos - atpos < 2 ))
{
alert("Please enter correct email ID")
return false;
}
eMailId: {
required: true,
email: true
}
/^[^\s@]+@[^\s@]+\.[^\s@]+$/
1. prettyandsimple@example.com
2. very.common@example.com
3. disposable.style.email.with+symbol@example.com
4. other.email-with-dash@example.com
9. #!$%&'*+-/=?^_`{}|~@example.org
6. "()[]:,;@\\\"!#$%&'*+-/=?^_`{}| ~.a"@example.org
7. " "@example.org (space between the quotes)
8. üñîçøðé@example.com (Unicode characters in local part)
9. üñîçøðé@üñîçøðé.com (Unicode characters in domain part)
10. Pelé@example.com (Latin)
11. δοκιμή@παράδειγμα.δοκιμή (Greek)
12. 我買@屋企.香港 (Chinese)
13. 甲斐@黒川.日本 (Japanese)
14. чебурашка@ящик-с-апельсинами.рф (Cyrillic)
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])+
Regex = /(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@[*[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+]*/
function validMail(mail)
{
return /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()\.,;\s@\"]+\.{0,1})+([^<>()\.,;:\s@\"]{2,}|[\d\.]+))$/.test(mail);
}
// VALID MAILS
validMail('Abc@example.com') // Return true
validMail('Abc@example.com.') // Return true
validMail('Abc@10.42.0.1') // Return true
validMail('user@localserver') // Return true
validMail('Abc.123@example.com') // Return true
validMail('user+mailbox/department=shipping@example.com') // Return true
validMail('"very.(),:;<>[]\".VERY.\"very@\\ \"very\".unusual"@strange.example.com') // Return true
validMail('!#$%&\'*+-/=?^_`.{|}~@example.com') // Return true
validMail('"()<>[]:,;@\\\"!#$%&\'-/=?^_`{}| ~.a"@example.org') // Return true
validMail('"Abc@def"@example.com') // Return true
validMail('"Fred Bloggs"@example.com') // Return true
validMail('"Joe.\\Blow"@example.com') // Return true
validMail('Loïc.Accentué@voilà.fr') // Return true
validMail('" "@example.org') // Return true
validMail('user@[IPv6:2001:DB8::1]') // Return true
// INVALID MAILS
validMail('Abc.example.com') // Return false
validMail('A@b@c@example.com') // Return false
validMail('a"b(c)d,e:f;g<h>i[j\k]l@example.com') // Return false
validMail('just"not"right@example.com') // Return false
validMail('this is"not\allowed@example.com') // Return false
validMail('this\ still\"not\\allowed@example.com') // Return false
validMail('john..doe@example.com') // Return false
validMail('john.doe@example..com') // Return false
let val = 'email@domain.com';
if(/^[a-z0-9][a-z0-9-_\.]+@([a-z]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[a-z]{2,10})?$/.test(val)) {
console.log('passed');
}
//
export const emailValid = (val:string):boolean => /^[a-z0-9][a-z0-9-_\.]+@([a-z]|[a-z0-9]?[a-z0-9-]+[a-z0-9])\.[a-z0-9]{2,10}(?:\.[a-z]{2,10})?$/.test(val);