邮箱匹配问题

邮箱匹配问题

[a-zA-Z0-9_-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,5})

最后的 (\.[a-zA-Z]{2,5}) 后面为什么不需要 + 号呢?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学,你好。

正则表达式中的“+”号表示:匹配加号(+)之前的正则表达式1次或多次,若在最后一个分组后面加上“+”号,则表示对下图中第二个红色方框所匹配的模式要求出现一次或者多次,这与目前主流的一些邮箱的实际格式不符!

http://img1.sycdn.imooc.com//climg/5d5b57ea0001639406780066.jpg

另一方面来说,上图中第一个红色方框的最后有“*”号,这种匹配模式是出现一次或者零次。当出现一次时,最后一个红色方框可以匹配最后的“.com”或“.cn”等这种类型的邮箱结尾;当出现零次时,正好被最后一个红色方框的匹配模式相匹配。

综上所述,最后没有“+”号的原因就是因为前一个匹配模式有“*”号,从而与最后一个没有“+”号的匹配模式形成互补以匹配完整的邮箱格式。

如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~

  • 洛维西 提问者 #1
    请问第二个红色方框不加 + * ? 是表示必须出现且只有一次是么?
    2019-08-21 16:57:21
  • 慕之熠_灿烈 回复 提问者 洛维西 #2
    是的,因为一般的邮箱都是以“.com”或者“.cn”来结尾的(针对目前最主流的邮箱服务器而言),必须得确保可以匹配到最后结尾格式。
    2019-08-22 10:41:32
好帮手乔木 2019-08-19 12:21:06

同学你好:

例如一个qq邮箱:13214564351@qq.com

在@之前我们要匹配所有的字符,所以需要贪婪匹配+,

在.com中的 . 之前我们要匹配@和 . 之间的所有字符,也需要贪婪匹配。

在 . 之后的后缀,我们一般都是com cn 等等,也需要贪婪匹配,但不会过长,所以设置了{2,5}2个字符到5个字符之间就足够了。当然{2,5}替换成+也是可以的。

如果我解决了同学的问题,请采纳!学习愉快^_^。

  • 提问者 洛维西 #1
    啊偶果老师,课上讲的贪婪模式是问号不是加号。我发现我提的问题好多你回答的都文不对题,以后请放过我的问题可以么?
    2019-08-19 21:09:22
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
1.Python零基础入门
  • 参与学习           人
  • 提交作业       2727    份
  • 解答问题       8160    个

想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师