![]() | 1 wikinee OP 附上我以前讨论 a.b.c.txt 和 a.b.tar.gz 文件名提取的帖子 http://v2ex.com/t/222982#reply14 |
![]() | 2 FrankFang128 2015-10-22 11:31:03 +08:00 有 @ 就过吧,别为难你的用户。 你只支持 .com .cn .net .us 邮箱是啥意思啊。 ([^.]+\.)+.[com|cn|net|us] |
![]() | 3 FrankFang128 2015-10-22 11:31:46 +08:00 ([^.]+\.)+\.[com|cn|net|us] 都怪你误导无了…… |
![]() | 4 Hello1995 2015-10-22 11:49:02 +08:00 via Android \w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)* 考虑一下域名以及用户名的字符限定以及首字符限定,这么写应该能通吃。 |
![]() | 5 wkdhf233 2015-10-22 11:55:05 +08:00 ![]() 判断邮箱格式是否正确的话,后面有\w\.\w 就给过了吧 二级域名不止多个.啊,有的还有-呢。。 |
![]() | 6 est 2015-10-22 12:20:46 +08:00 最好的办法是解析域名 MX 记录,连一下 25 端口。 |
![]() | 8 vitovan 2015-10-22 13:02:23 +08:00 [A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4} |
![]() | 10 gamexg 2015-10-22 13:28:51 +08:00 还有正则里面 . 是可以匹配 char(.) 的。 别难为用户了,,有 @ 有 . 就行了。 [^@]+@[^@]+\.[^@]+ |
![]() | 11 lygmqkl 2015-10-22 13:30:37 +08:00 [email protected] 代表邮箱,然后验证邮箱就行了。 |
![]() | 12 raysonx 2015-10-22 13:37:11 +08:00 表示我认识的圈子里有好多 [email protected] 的邮箱,看来楼主是不打算支持了 |
![]() | 14 branchzero 2015-10-22 13:51:04 +08:00 域名不一定是 com|cn|net|us 结尾的说,最好还是按照 2-10 位的字母来写正则吧。 |
15 fengdra 2015-10-22 14:21:55 +08:00 via iPhone ![]() @vitovan 钻个牛角尖, [email protected] |
![]() | 16 zonghua 2015-10-22 14:23:06 +08:00 |
![]() | 17 branchzero 2015-10-22 14:26:18 +08:00 @zonghua 额,我是说后缀,不是域名主体部分=。= |
![]() | 18 zonghua 2015-10-22 14:31:16 +08:00 @branchzero 好吧,我看错了= =. |
![]() | 19 jugelizi 2015-10-22 14:47:58 +08:00 你这验证的目的? 我记得有些必须 edu 给学生用的 不然的话发验证到邮箱就解决啦,前端的验证没必要太过吧,会坑人的 |
20 lililqth 2015-10-22 15:18:52 +08:00 \w+@(\w+.)+[com|cn|net|us] |
![]() | 21 Slienc7 2015-10-22 19:58:52 +08:00 via Android [A-Za-z0-9]+?[A-Za-z0-9\.\-]*?[A-Za-z0-9]+@[A-Za-z0-9]+?[A-Za-z0-9\.\-]*?[A-Za-z0-9]+ 手写未测试 域名后缀一直增加 不可能固定 前后都可能非首末位- . |
![]() | 22 Slienc7 2015-10-22 20:01:41 +08:00 via Android @xgowex 举个例子 aasa-sss.high.ffgg-fcuf@fcg-hgc.cgg-gvc.xn--hhuuh 注意:实际-.不可能相连 上面的 re 没有考虑到 可能中文邮箱,此处不做考虑 |
![]() | 24 jings 2015-10-23 00:06:22 +08:00 function isEmail(field){ return field.value.indexOf("@") !=-1&&field.value.indexOf(".") !=-1 } |
![]() | 25 KoleHank 2015-10-23 08:07:14 +08:00 据说最新标准 xxx@xxx 是合法的邮箱了,怎么办? |
![]() | 26 virusdefender 2015-10-23 08:35:53 +08:00 django 匹配邮箱的正则,你可以参考,这个都标准了吧 def validate(self, value): value = super(EmailField, self).validate(value) user_regex = re.compile( r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*$" r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"$)', re.IGNORECASE) domain_regex = re.compile( r'(?:[A-Z0-9](?:[A-Z0-9-]{0,61}[A-Z0-9])?\.)+(?:[A-Z]{2,6}|[A-Z0-9-]{2,}(?<!-))$' # literal form, ipv4 address (SMTP 4.1.3) r'|^\[(25[0-5]|2[0-4]\d|[0-1]?\d?\d)(\.(25[0-5]|2[0-4]\d|[0-1]?\d?\d)){3}\]$', re.IGNORECASE) domain_whitelist = ['localhost'] if '@' not in value: raise ValidationError("Email format is not correct") user_part, domain_part = value.rsplit('@', 1) if not user_regex.match(user_part): raise ValidationError("Email format is not correct") if (domain_part not in domain_whitelist and not domain_regex.match(domain_part)): # Try for possible IDN domain-part try: domain_part = domain_part.encode('idna').decode('ascii') if not domain_regex.match(domain_part): raise ValidationError("Email format is not correct") else: return except UnicodeError: pass raise ValidationError("Invalid Email format") return value |
![]() | 27 virusdefender 2015-10-23 08:36:07 +08:00 |
![]() | 28 hxndg 2015-10-23 09:18:52 +08:00 \w+@\w+(\.\w+)*\.[com|cn|net|us] |
![]() | 29 hxndg 2015-10-23 09:26:52 +08:00 leaving the enviroment,all comment is nonesense |
30 zhhc 2015-10-23 09:35:10 +08:00 你们先试试能否匹配 [email protected] 不是我钻牛角尖 |
31 aksoft 2015-10-23 10:27:47 +08:00 解析 @后面的,匹配有个求用 |
32 18000rpm 2015-11-02 12:31:35 +08:00 ![]() 小声问一句, [com|cn|net|us] 这种是什么用法?看你们全都这么用,我 Google 了半天也没找到这种语法。 P.S. 我觉得是不是应该用圆括号 (com|cn|net|us) @FrankFang128 @lililqth @hxndg |
![]() | 35 FrankFang128 2015-11-02 13:17:55 +08:00 via Android @18000rpm 你是对的 我被楼主带沟里了 |