-
23 @Alex我添加此评论的原因是,接受的答案中建议的正则表达式不允许现有的实时电子邮件地址,这对客户来说是一个糟糕的开始,而真正的大问题是,即使接受了地址,它也没有说明它是否有效。 要可靠地验证所提供的电子邮件是否有效,唯一的方法是发送带有验证链接的邮件。 因此,如果您的用例不要求您验证电子邮件,只需对@进行最小测试,否则使用验证电子邮件。 Regex只会提供糟糕的用户体验。 – 大卫·马尔滕森 评论 2021年5月3日14:56 -
@大卫·马尔滕森,我给你的想法加了一个+。 然而,我确实认为验证电子邮件链接的事情也可能是糟糕的用户体验。 这可能会让你失去客户。 – 米卡尔1000 评论 2021年6月3日10:22 -
7 @mikael1000当然,但是当您不知道它是否是有效的电子邮件时,regex验证的目的是什么。 如果您不想使用验证链接来打扰客户,只需在<something>中执行最简单的验证<somethang>,然后就这样做。 它将确保客户至少添加了一些可能是电子邮件的内容,更重要的是,在您进行实际验证之前,这主要是浪费代码。 您可以通过dns查找检查域是否存在。 – 大卫·马尔滕森 评论 2021年6月4日14:23 -
2 非常相似: 如何使用正则表达式验证电子邮件地址? – 彼得·莫特森 评论 2022年2月16日23:18 -
三 我必须承认,我不明白为什么在你无法预测用户是否使用有效字符创建了一个基本类型时,会有很多验证。 只需勾选@,开始时至少一个点就足够了。 – 瓦茨·埃弗森 评论 2022年8月23日10:56
79个答案
const validateEmail=(电子邮件)=>{ return字符串(电子邮件) .to下壳体() .匹配( /^(([^<>()[\]\\.,;: \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]+\.)+[a-zA-Z]{2,}))$/ ); };
常数= /^(([^<>()[\]\.,;: \s@\“]+(\.[^<>()[\]\.,;:\s@\”]+)*)|(“.+\”))@(([^<<()[\\]\.;: \s@\“]+\.)+[^<>()[\]\.,;:\s@\”]{2,})$/i;
const validateEmail=(电子邮件)=>{ 返回email.match( /^(([^<>()[\]\\.,;: \s@\“]+(\.[^<>()[\]\\.,;:\s@\”]+)*)|(“.+\”))@((\[[0-9]{1,3}\.[0-9]}1,3}\.[0-9]{1,3{\\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})$/ ); }; 常量验证=()=>{ const$result=$(“#result”); const email=$('#email').val(); $result.text(“”); if(验证电子邮件(电子邮件)){ $result.text(电子邮件+“有效”); $result.css('color','green'); }其他{ $result.text(电子邮件+“无效。”); $result.css('color','red'); } 返回false; } $('#email').on('input',验证);
<script src=“ https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js “></script> 输入电子邮件地址 <input id=“email”type=“email“> <p id=“result”></p>
-
722 -
74 -
233 -
22 @KevinFegan让我们现实一点:您不会使用JavaScript来确认电子邮件是否真实。 我认为当用户注册时,这种验证是完全合理的。 您可能不想麻烦地将验证电子邮件发送到不可能存在的地址。 有些人还可能有出站电子邮件限制,因此值得向其发送电子邮件 电子邮件@localhost , 我没有电子邮件 或任何其他有趣的用户输入。 – 未定义 评论 2021年7月16日23:02 -
1
[电子邮件保护]
/^\S+@\S+\。 \S公司+$/
/^[^\s@]+@[^\s@@]+\。 [^\s@]+$/
功能验证电子邮件(电子邮件){ var re=/\S+@\S+\。 \S+/; 返回重新测试(电子邮件); } console.log(validateEmail(我的电子邮件是 [电子邮件保护] ')); // 真的 console.log(validateEmail(我的电子邮件是 anystring任意字符串 .任何');// 假
-
122 你可以实现一个20倍长的东西,这可能会给一些用户带来问题,并且在未来可能无效,或者你可以使用ImmortalFirefly的版本,以确保他们至少会努力使它看起来真实。 根据您的应用程序,可能更容易遇到某人因为您不接受他们非常规的电子邮件而生气, 而不是那些通过输入不存在的电子邮件地址而导致问题的人(他们可以通过输入100%有效的RFC2822电子邮件地址,但使用未注册的用户名或域)。 投票支持! – 用户83358 评论 2012年7月30日18:20 -
134 -
9 -
4 -
1 @蒂莫 [^\s@] 表示“既不是空白字符,也不是 @ ". [xyz] 表示x、y或z中的任意一个,以及 [^xyz] 指任何一个字符 除了 x、 y或z。 \秒 表示“任何空白字符”。 \S公司 表示“任何非空白字符”。 – 杰拉比 评论 2022年8月21日11:03
官方标准称为 副本请求2822 。它描述了有效电子邮件地址必须遵循的语法。您可以( 但你不应该 — 阅读 )使用此正则表达式实现它:
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zO-9!#$%&'*+/=?#_`{|}~-]+)*|“(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5b\x5d-\x7f]|\\[\x01-\ x09\x0b \x0c-\x0e-\x7f])*”)@(?:(?:a-z0-9](?:[a-z0-9-]*[a-zO-9])?\。)+ [a-z0-9](?:[a-z0-19-]*[a-z0-29])|\ [(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.) {3} (?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b \x0c-\x0f])+)\])
(…)如果我们省略了使用双引号和方括号的语法,则可以获得更实用的RFC 2822实现。 它仍将匹配目前实际使用的99.99%的所有电子邮件地址。
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zO-9!#$%&'*+/=??^_'{|}~-]+)*@(?:[a-z0-19](?:[a-z0-9-]*[a-z0-29])?\)+ [a-z0-9](?:[a-z0-9-]*[a-z0-9])?
您可以做的进一步更改是允许任何两个字母的国家代码顶级域,并且只允许特定的通用顶级域。 此正则表达式过滤伪电子邮件地址,如
[电子邮件保护] .你 将需要在添加新的顶级域时对其进行更新 .
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zO-9!#$%&'*+/=??^_'{|}~-]+)*@(?:[a-z0-19](?:[a-z0-9-]*[a-z0-29])?\)+ (?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)\b
因此,即使在遵循官方标准的情况下,仍然需要权衡取舍。 不要盲目地从在线图书馆或论坛复制正则表达式。 始终在自己的数据和应用程序上测试它们。
-
111 注:“实际使用中 今天 “在200x年编写代码时可能是有效的。代码 将 可能会在特定年份之后继续使用。 (如果我每个“meh”都有一毛钱,除了那些“我必须修复的”,没有人会使用4+字母TLD,我可以垄断世界铜镍市场;) 评论 2012年6月13日15:51 -
6 -
11 -
@克里斯蒂安·文森佐·特拉纳(Christian Vincenzo Traina)是最后一个拒绝我在.rocks域上的电子邮件地址的人。 如果这阻止了我阅读你的时事通讯,那么我最好不要把《无知日报》放进我的收件箱,但阻止我使用这个域名的服务列表包括:全国公共交通系统、航空公司、医疗服务。。。 – 液化天然气 评论 2023年4月23日13:42 -
2
^\S+@\S+$
/^\S+@\S+\。 \S公司+$/
-
120 -
4 -
1 -
-
<表格> <label>电子邮件地址 <input type=“电子邮件”占位符=“ [电子邮件保护] “必需> </label> <输入类型=“提交”> </form>
A类 有效的电子邮件地址 是与
电子邮件 生成以下ABNF,其字符集为Unicode。
电子邮件=1*(atext/“.”)“@”label*(“.”label) label=let dig[[ldh str]let dig]; RFC 1034第3.5节将长度限制为63个字符 atext=<如RFC 5322第3.2.3节中所定义> let-dig=<如RFC 1034第3.5节中所定义> ldh-str=<如RFC 1034第3.5节中所定义>
此要求是 故意违反 RFC 5322中定义了电子邮件地址的语法,该语法同时太严格(在“@”字符之前)、太模糊(在“#”字符之后)和太松散(允许注释、空格字符和大多数用户不熟悉的方式引用的字符串),在这里无法实际使用。
以下与JavaScript和Perl兼容的正则表达式是上述定义的实现。
/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-z9-Z0-9-]{0,61}[a-zC-Z0-9]])? (?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-z9-Z0-9]])?)*$/
-
54 -
起初我发现这个答案很有用,但我尝试了一些无效的电子邮件地址,正则表达式说有有效的。。。 举例说明: bar@域 (缺少扩展名), A@b@ [电子邮件保护] (多个@)等(cf en.wikipedia.org/wiki/Email_address#示例 ). 我在这里找到了一个不错的正则表达式: 电子邮件regex.com – 托马斯冠军 评论 2021年10月22日15:30 -
2 -
2 @KNP倍数 @ 仅当用户名部分中出现额外的“@”并用双引号括起来时才有效。 自2013年以来,第二点(缺少扩展)似乎也不再有效( icann.org/en/annociations/details/… ),但这要视情况而定,我想有人会认为扩展是可选的。 最后,我选择模块 地址 来自joi: joi.dev/模块/地址/api/? v=4.1.0#emailisvalizemail-options 验证我的应用程序中的电子邮件地址。 – 托马斯冠军 评论 2021年12月7日21:37 -
1
/^[^\s@]+@[^\s@@]+\。 [^\s@]+$/
1 [电子邮件保护] 2 [电子邮件保护] 三。 [电子邮件保护] 4. [电子邮件保护] 9. #!$%&'*+-/=?^_` {}| [电子邮件保护] 6. "()[]:,;@\\\"!#$%&'*+-/=?^_` {}|~.a“@example.org 7.“”@example.org(引号之间的空格) 8.üñiheissoyer@example.com(本地部分使用Unicode字符) 9.üñîçøğé@üñîçøğé.com(域名部分为Unicode字符) 10.Pelé@example.com(拉丁语) 11.δОκⅢμt_@παρδε 12 我買@屋企.香港 (中文) 13 甲斐@黒川.日本 (日语) 14.бебураáа@аик-ch-аПелсинами.рф(西里尔文)
函数validateEmail(值){ var输入=document.createElement('input'); input.type='电子邮件'; input.required=真; input.value=值; return typeof input.checkValidity===“函数”? input.checkValidity():/\S+@\S+\。 \S+/.测试(值); }
emailAddress.match(/some_regex/);
^((?>[a-zA-Z\d!#$%&'*+\-/=?^_`{|}~]+\x20*|“(?=[\x01-\x7f])[^”\\]|\\[\x01-\x7f])* “\x20*)*(?<角度><))?((?!\.)(?>\.?[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])+)(?(角度)>)$
email.includes(“@”)
email.indexOf('@')>0
函数looksLikeMail(str){ var lastAtPos=str.lastIndexOf(“@”); var lastDotPos=str.lastIndexOf('.'); return(lastAtPos<lastDotPos&&lastAtPos>0&&str.indexOf(“@@”)==-1&&last DotPos>2&&(str.length-lastDopPos)>2); }
lastAtPos<lastDotPos :最后 @ 应该在最后一个之前 . 自从 @ 不能是服务器名称的一部分(据我所知)。 lastAtPos>0 :在最后一个之前应该有一些内容(电子邮件用户名) @ . str.indexOf(“@@”)==-1 :应该没有 @@ 在地址中。 即使 @ 显示为电子邮件用户名中的最后一个字符,必须加引号 " 将介于两者之间 @ 和最后一个 @ 在地址中。 lastDotPos>2 :例如,在最后一个点之前至少应有三个字符 [电子邮件保护] . (str.length-lastDotPos)>2 :最后一个点后面应该有足够的字符,以形成双字符域。 我不确定括号是否必要。
功能检查电子邮件(电子邮件地址){ 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\\x40\\x5b-\\x5d\\x7f-\\xff]+”; var sQuotedPair='\\x5c[\\x00-\\x7f]'; var sDomainLiteral='\\x5b('+sDtext+'|'+sQuotedPair+')*\\x5d'; var sQuotedString='\\x22('+sQtext+'|'+sQuoted对+')*\\x22'; var sDomain_ref=sAtom; var sSubDomain='('+sDomain_ref+'|'+sDomainLiteral+')'; var sWord='('+sAtom+'|'+sQuotedString+')'; var sDomain=sSubDomain+'(\\x2e'+sSubDomino+')*'; var sLocalPart=sWord+'(\\x2e'+sWord+’)*'; var sAddrSpec=sLocalPart+'\\x40'+sDomain;// 完成RFC822电子邮件地址规范 var sValidEmail=“^”+sAddrSpec+“$”;// 作为整个字符串 var reValidEmail=新RegExp(sValidEmail); return reValidEmail.test(emailAddress); }
-
-
-
-
-
三
电子邮件=$('email'); 过滤器=/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9-])+\。)+ ([a-zA-Z0-9]{2,4})+$/; if(filter.test(email.value)){ //耶! 有效的 返回true; } 其他的 {返回false;}
^([a-zA-Z0-9!#$%&'*+\/=?^_`{|}~-]+(?:\.[a-zA-Z0-9;#$%&'*+\/=??^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-z-a-Z0-9])?\)+ [a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?)$
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zO-9!#$%&'*+/=??^_'{|}~-]+)*@(?:[a-z0-19](?:[a-z0-9-]*[a-z0-29])?\)+ [a-z0-9](?:[a-z0-9-]*[a-z0-9])?
var emailCheck=/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zO-9!#$%&'*+/=?^ _`{|}~-]+)*@(?:[a-z0-19](?:[a-z0-9-]*[a-z0-29])?\)+ [a-z0-9](?:[a-z0-19-]*[a-z0-29])$/ i; console.log(emailCheck.test(' [电子邮件保护] ') );
原件
/^(([^<>()\[\]\\.,;: \s@“]+(\.[^<>()\[\]\\.,;:\s@”]+)*)|(“.+”))@((\[[0-9]{1,3}\.[0-9][1,3}\.[0-9]}1,3}\.[0-9]{1,3{])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,})$/ 被改进的
/^(([^<>()\[\]\.,;: \s@\“]+(\.[^<>()\[\]\.,;:\s@\”]+)*)|(\“.+\”)@(([^<<()\.,,;\s@\“]+\.{0,1})+[^<>()\,;:\s@\”]{2,})$/
<input type=“email”/>
-
这是最简单的解决方案,我们也可以使用外部库,如 电子邮件验证器 使事情变得更容易,如这里所述 qawithexperts.com/article/javascript/… – 用户13993546 评论 2022年1月22日12:02
功能有效邮件(mail) { 返回/^(([^<>()\[\]\.,;: \s@\“]+(\.[^<>()\[\]\.,;:\s@\”]+)*)|(\“.+\”)@(([^<<()\.,,;\s@\“]+\.{0,1})+([^<>()\.,;;:\s@“]{2,}|[\d\.]+)$/.test(邮件); }
validMail(' [电子邮件保护] ')//返回true validMail(' [电子邮件保护] .')//返回true validMail(' [电子邮件保护] ')//返回true validMail(' 用户@localserver ')//返回true validMail(' [电子邮件保护] ')//返回true validMail('用户+邮箱/ [电子邮件保护] ')//返回true validMail(“非常.(),:;<>[]\”。 非常好\ “very@@\\”very\“.unversal”@strange.example.com')//返回true 有效邮件('!#$%\'*+-/=?^_`.{|} [电子邮件保护] ')//返回true validMail('“()<>[]:,;@\\\”!#$%&\'-/=^_` {}|~.a“@example.org')//返回true validMail('“ Abc@定义 “@example.com')//返回true validMail(“Fred Bloggs”@example.com)//返回true validMail('“Joe.\\Blow”@example.com')//返回true validMail('Loíc.Accentué@voilá.fr')//返回true validMail('“”@example.org')//返回true validMail('user@[IPv6:2001:DB8::1]')//返回true
validMail('Abc.example.com')//返回false 有效邮件(AA@b@ [电子邮件保护] ')//返回false 有效邮件('a“b(c)d,e:f;g<h>i[j\k] [电子邮件保护] ')//返回false validMail('只是“不” [电子邮件保护] ')//返回false validMail('this is“not\ [电子邮件保护] ')//返回false validMail(“仍然”不是\\ [电子邮件保护] ')//返回false validMail(' [电子邮件保护] ')//返回false validMail(' [电子邮件保护] ')//返回false
-
此地址“ abc@示例 应返回false,但返回true。wiki页面提到:“它必须符合主机名的要求” en.wikipedia.org/wiki/Email_address#域 – 布赖恩·何 评论 2022年9月16日2:23 -
让val=' [电子邮件保护] '; 如果(/^[a-z0-9][a-zO-9-_\.]+@([a-z]|[a-z9-9]?[a-zo-9-]+[a-z0-19])\。 [a-z0-9]{2,10}(?:\.[a-z]{2,10})?$/。 测试(val)){ console.log(“通过”); }
// export const emailValid=(val:string):boolean=>/^[a-z0-9][a-zO-9-_\.]+@([a-z]|[a-z9-9]?[a-z0-19-]+[a-z0-29])\。 [a-z0-9]{2,10}(?:\.[a-z]{2,10})?$/。 测试(val);
-
我不认为这对世界上的大多数人都有用,也不认为这是许多客户的非普通受众。 对于国际化用户名和域,它将失败。 我在下面的回答使用URL接口来解决这个问题,该接口已经在大多数运行时中内置了支持。 裁判: stackoverflow.com/a/72018404/965666 – 吉蒙特 评论 2022年7月26日1:08 -
if(注册测试(/@/))
var emailID=document.forms[“formName”][“form element id”].value; atpos=emailID.indexOf(“@”); dotpos=电子邮件ID.lastIndexOf(“.”); if(atpos<1(dotpos-atpos<2)) { 警报(“请输入正确的电子邮件ID”) 返回false; }
电子邮件Id:{ 必需:true, 电子邮件:true }
功能是电子邮件(email){ 返回/^((([a-z]|\d|[!#\$%&'\*\-\/=\?\^_`{|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\_`{\|}~]|[\u000A0-\u D7FF \uF900-\u FDCF\u FDF0-\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-\uD7 FF\uF 900-\u FDCF\u FDF0-\ 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]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|([a-z]|[\u 00A0-\ uD7FF\uF900-\ uFDCF\ uFDF0-\uFFEF])([a-z]|\d |-|\.|_|~|[u00A0-\uD7 FF\uF 900-\u FDCF\u FDF0-\ uFFEF)*7FF\uF900-\uFDCF\uFDF0-\uFFEF]))$/i.test(电子邮件); }
如果(isEmail(' [电子邮件保护] '){console.log('这是有效的电子邮件');}
var测试结果 函数checkemail(){ var str=文档.validation.emailcheck.value var过滤器=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w/]+\.)*\w[\w]{0,66})\。 ([a-z]{2,6}(?:\.[a-z]{2})?)$/ 我 if(filter.test(str)) 测试结果=真 其他{ 警报(“请输入有效的电子邮件地址!”) 测试结果=假 } 返回(测试结果) } 函数checkbae(){ if(document.layers ||document.getElementById||documnt.all) return支票邮件() 其他的 返回true }
<form name=“validation”onSubmit=“return checkbae()”> 请输入有效的电子邮件地址:<br/> <input type=“text”size=18 name=“emailcheck”> <input type=“submit”value=“submit”> </form>
函数check_email(val){ if(!val.match(/\S+@\S+\.\S+/)){//Jaymon'S/Squirtle的解 //做点什么 返回false; } if(val.indexOf('')=- 1||val.indexOf('..')=- 1){ //做点什么 返回false; } 返回true; } 检查电子邮件(' 检查@this.com '); // 返回false 检查电子邮件(' [电子邮件保护] '); // 返回false 检查电子邮件(' [电子邮件保护] '); // 返回false 检查电子邮件(' [电子邮件保护] '); // 返回true
/^[-a-z0-9~!$%^&*=+}{\'?]+(\.[-a-z0-9~)$%^&*=+{\'吗]+)*@([a-z0-9_][-a-z 0-9_]*(\.[-a-zO-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,3C}\.[0-9])(:[0-9]}1,5})$/ 我
[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zO-9!#$%&'*+/=??^_'{|}~-]+)*@(?:[a-z0-19](?:[a-z0-9-]*[a-z0-29])?\)+ [a-z0-9](?:[a-z0-19-]*[a-z0-29])+
/^([\w\!\#$\%\&\'\*\+\-\/\=\?\^\`{\|\}\~]+\.)*[\w\!\#$\%\&\'\+\-\/\=\?\'^\`\\}\~]+@,([a-z0-9]{1}[a-zO-9\-]{0,62}[a-z0-9]})|[a-z])+ [a-z]{2,6})|(\d{1,3}\.){3}\d{1.3}(\:\d{1.5})$/ 我