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 1
判断邮箱格式是否正确的话,后面有\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 1
@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 1
小声问一句,
[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 你是对的 我被楼主带沟里了
|