鱼C论坛

 找回密码
 立即注册
查看: 1466|回复: 17

[已解决]谁能实现这段简单的正则?【有参考哦】

[复制链接]
发表于 2019-9-17 07:58:26 | 显示全部楼层 |阅读模式
199鱼币
本帖最后由 不二如是 于 2019-9-17 09:32 编辑

编写一个函数验证电子邮件地址:

@之前

  • 以字母或数字开头
  • 允许使用字母(大小写都可以)、数字、'.'、'-'、'\'
  • 3 <= 长度 <= 20


@之后

  • 至少两个子域
    例如:@xxx.com(√) ,@com(x)
  • 允许字母和数字
  • 域名后缀应包含 2-8 个字符

为方便验证,提供 Python 和网页代码(只需替换 16 行正则内容即可)。

Python:
  1. import re

  2. c = re.compile(r'^[a-zA-Z0-9]+(\.[a-zA-Z0-9_-]+){2,19}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){1,7})

  3. email = raw_input('type an email:')

  4. s = c.search(email)

  5. if s:
  6.     # print(s.group())
  7.     print(email)
  8. else:
  9.     print 'False'
复制代码


Web:
  1. <!doctype html>
  2. <html>
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>验证</title>
  6. </head>
  7. <body>
  8. <form action="">
  9.       输入:<input type="text" name="tstEmail" id="mazey" placeholder="请输入邮箱">
  10.       <input type="button" value="验证" onclick="check();">
  11. </form>

  12. <script>
  13.     function check(){
  14.         var reg = new RegExp("^[a-zA-Z0-9]+(\\.[a-zA-Z0-9_-]+){2,19}@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+){1,7}+$"); //正则表达式
  15.         var obj = document.getElementById("tstEmail"); //要验证的对象
  16.         if(obj.value === ""){ //输入不能为空
  17.             alert("输入不能为空!");
  18.             return false;
  19.         }else if(!reg.test(obj.value)){ //正则验证不通过,格式不对
  20.             alert("验证不通过!");
  21.             return false;
  22.         }else{
  23.             alert("通过!");
  24.             return true;
  25.         }
  26.     }
  27. </script>
  28. </body>
  29. </html>
复制代码

最佳答案
2019-9-17 07:58:27
本帖最后由 XiaoPaiShen 于 2019-9-21 01:30 编辑

我来:
  1. import re

  2. c = re.compile(r'^([a-zA-Z0-9]{1}[\\a-zA-Z0-9.\-]{2,19})@([a-zA-Z0-9]+[a-zA-Z0-9.]+[.]{1}[a-zA-Z0-9]{2,8}))

  3. email = input('type an email:')

  4. s = c.search(email)

  5. if s:
  6.     # print(s.group())
  7.     print(email)
  8. else:
  9.     print('False')
复制代码



c = re.compile(r'^([a-zA-Z0-9]{1}[\\a-zA-Z0-9.\-]{2,19})@([a-zA-Z0-9]+[a-zA-Z0-9.]+[.]{1}[a-zA-Z0-9]{2,8})$')

在代码块中,正则表达式的最后$'给去掉了

最佳答案

查看完整内容

我来: c = re.compile(r'^([a-zA-Z0-9]{1}[\\a-zA-Z0-9.\-]{2,19})@([a-zA-Z0-9]+[a-zA-Z0-9.]+[.]{1}[a-zA-Z0-9]{2,8})$') 在代码块中,正则表达式的最后$'给去掉了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 07:58:27 | 显示全部楼层    本楼为最佳答案   
本帖最后由 XiaoPaiShen 于 2019-9-21 01:30 编辑

我来:
  1. import re

  2. c = re.compile(r'^([a-zA-Z0-9]{1}[\\a-zA-Z0-9.\-]{2,19})@([a-zA-Z0-9]+[a-zA-Z0-9.]+[.]{1}[a-zA-Z0-9]{2,8}))

  3. email = input('type an email:')

  4. s = c.search(email)

  5. if s:
  6.     # print(s.group())
  7.     print(email)
  8. else:
  9.     print('False')
复制代码



c = re.compile(r'^([a-zA-Z0-9]{1}[\\a-zA-Z0-9.\-]{2,19})@([a-zA-Z0-9]+[a-zA-Z0-9.]+[.]{1}[a-zA-Z0-9]{2,8})$')

在代码块中,正则表达式的最后$'给去掉了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 08:42:32 | 显示全部楼层
本帖最后由 塔利班 于 2019-9-17 08:47 编辑
  1. p=r'^[0-9a-zA-Z]{1}[0-9a-zA-Z.\-\\]{2,19}@[0-9a-zA-Z]+\.'+r'com|cn|net'
复制代码

web那里替换不知道,python这边是可以匹配的.还有最后应该有美元符号,但是我加到code里会变成一行汉字@不二如是
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-17 08:47:49 | 显示全部楼层
本帖最后由 不二如是 于 2019-9-17 08:48 编辑
塔利班 发表于 2019-9-17 08:42
web那里替换不知道,python这边是可以匹配的.还有最后应该有美元符号,但是我加到code里会变成一行汉字


会变成汉字?
  1. c = re.compile(r'^[a-zA-Z0-9]+(\.[a-zA-Z0-9_-]+){2,19}@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+){1,7})
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 08:52:10 | 显示全部楼层

恩,对,后面也有长度要求,但是开始没提_-\
如果写在代码区<>这里会,我在代码区在后边写一部分汉字就会这样,虽然结果不显示,可能是网页文本编辑器的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 08:54:05 | 显示全部楼层
我来:^[a-zA-Z0-9][a-zA-Z0-9\d\.-]{2,19}@[a-zA-Z0-9]+\.com
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-9-17 08:56:18 | 显示全部楼层
jinlovelive 发表于 2019-9-17 08:54
我来:^[a-zA-Z0-9][a-zA-Z0-9\d\.-]{2,19}@[a-zA-Z0-9]+\.com

没有 @之后的哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 09:08:33 | 显示全部楼层
感觉你想说的邮箱是要求\后边+数字和字母那种的,但是题目中开始没写出来,而且@后边只说了字母数字,但是你的代码其实是有额外要求的,这个是按没要求的写(我是用Py3)
  1. import re

  2. c = re.compile(r'[a-zA-Z0-9][a-zA-Z0-9_\-.\\]{2,19}@[a-zA-Z0-9]{2,8}')

  3. email = input('type an email:')
  4. s = c.search(email)

  5. if s:
  6.     print(email)
  7. else:
  8.     print('False')
复制代码

点评

我很赞同!: 5.0
我很赞同!: 5
可行!2天后如果没有更好的,这个就是  发表于 2019-9-17 09:15
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 09:18:30 | 显示全部楼层
本帖最后由 塔利班 于 2019-9-17 09:28 编辑

按你说的理解着写了个,反正我也不知道真正的邮箱格式啦
  1. import re

  2. c = re.compile(r'^[a-zA-Z0-9]+(\.[a-zA-Z0-9_\-\\]+)*@[a-zA-Z0-9_\-\\]+\.[a-zA-Z]+)

  3. email = input('type an email:')
  4. L=email.split('@')
  5. if len(L)!=2:
  6.     print('False')
  7. else:
  8.     a,b=L
  9.     if len(a) in range(3,21) and len(b) in range(2,9):
  10.         if re.match(c,email):
  11.             print(email)
  12.         else:
  13.             print('False')
  14.     else:
  15.         print('False')
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 13:35:24 | 显示全部楼层
本帖最后由 jinlovelive 于 2019-9-17 13:37 编辑
  1. import re

  2. c = re.compile(r'^[a-zA-Z0-9][a-zA-Z0-9\\\.-]{2,19}@[a-zA-Z0-9]+(\.[a-zA-Z0-9_-]{1,7})*(\.[a-zA-Z0-9]{1,7}))

  3. email = input('type an email:')

  4. s = c.search(email)

  5. if s:
  6.     # print(s.group())
  7.     print(email)
  8. else:
  9.     print('False')
复制代码

点评

我很赞同!: 5.0
我很赞同!: 5
  发表于 2019-9-17 13:43
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 13:38:06 | 显示全部楼层
一贴输出结果就乱了。。。头大
==================== RESTART: C:\Users\hasee\Desktop\1.py ====================
type an email:6165165165gsg1@qq.com.cn.cs.css.ca
6165165165gsg1@qq.com.cn.cs.css.ca
>>>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 15:05:08 | 显示全部楼层
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-17 15:05:43 | 显示全部楼层
  1. import re
  2. '''
  3. @之前     以字母或数字开头   允许使用字母(大小写都可以)、数字、'.'、'-'、'\'           3 <= 长度 <= 20           
  4. @之后     至少两个子域   例如:@xxx.com(√) ,@com(x)   允许字母和数字   域名后缀应包含 2-8 个字符
  5. '''
  6. c = re.compile(r'^[a-z0-9][\w\.\-\\]{2,19}@[a-z\d]{2,8}(.[a-z\d]{1,7})+,re.I)
  7. def fun(e):
  8.     s = c.search(e)
  9.     if s:
  10.         print(e)
  11.     else:
  12.         print("False")
  13. elist='6165165165gsg1@qq.com.cn.cs.css.ca'
  14. fun(elist)
复制代码

点评

我很赞同!: 5.0
我很赞同!: 5
  发表于 2019-9-17 15:07

评分

参与人数 1荣誉 +6 鱼币 +6 贡献 +3 收起 理由
不二如是 + 6 + 6 + 3 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-19 21:43:05 | 显示全部楼层
忽然冷清了许多……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-9-20 20:46:18 | 显示全部楼层
我来:
来......不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-19 17:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表