• 正则表达式 验证邮件地址


    不懂正则表达式,所以直接去网上搜现成的正在表达式,结果掉坑里面了

    这个是网上找的表达式:

    ^([0-9a-zA-Z]([-.w]*[0-9a-zA-Z])*@(([0-9a-zA-Z])+([-w]*[0-9a-zA-Z])*.)+[a-zA-Z]{2,9})$

    [a-z]([a-z0-9]*[-_]?[a-z0-9]+)*@([a-z0-9]*[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?

    单元测试的时候没问题,然后Tester跑case时发现“卡死”现象,两个都会卡死

    tester输入是:sadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfassfasdfasdfasdfasdfasdfasdadfasdgaewegwegwegwedfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfasdfasdfsadfas

    总共255个字符(别纠结没限制输入长度)

    于是想,还是算了,自己摸索一下,百度百科邮件地址格式,他这样子说的:

    通常电子邮件地址的格式为:user@mail.server.name,其中 user 是收件人的用户名,mail.server.name是收件人的电子邮件服务器名,它还可以是域名或十进制数字表示的 IP 地址。

    也就是用户名和服务器地址,然后用@隔开,然后下载了一个叫“DEELX正则引擎文档”的文档学习正则表达式写法,文档内容很少,看了基本语法之后,自己定义了匹配规则:

    1.用户名第一个字符必须是数字或字母,其他用w匹配,w可以匹配任何一个字母或者数字或者下划线

    2用户名后必须是@符号

    3.@符号后必须是数字或字母字符串,然后字符串可以被小点符号分割,并且相邻字符不能是两个小点

    一句话的说关键就是是服务器地址的匹配,将服务器地址拆分成两块mail和.server.name,然后.server.name结构是重复的,可视为小点开头然后接数字或字母的重复结构,然后就很好写表达式了:^[da-zA-Z][w]*@[da-zA-z]+(.[da-zA-z]+){1,9}$

    棕色:必须以数字或字母开头

    红色:匹配任一一个w

    绿色:至少有一个数字或字符

    浅青色:是一个子表达式,表示匹配以小点开始并以数字或字母结尾的字符串

    紫色:浅青色这个子表达式至少匹配1个,并且最多匹配9个这样的字符串,也就是前面说的重复的结构

    然后测试,发现貌似还行

    至于不能出现的特殊字符,八度后没发现什么有用信息,就没考虑。

  • 相关阅读:
    winform+c#之窗体之间的传值 Virus
    ASP.NET 2.0 利用 checkbox获得选中行的行号, 在footer中显示 Virus
    .NET中的winform的listview控件 Virus
    我的书橱
    Expert .NET 2.0 IL Assembler·译者序一 写在一稿完成之即
    Verbal Description of Custom Attribute Value
    AddressOfCallBacks in TLS
    下一阶段Schedule
    2008 Oct MVP OpenDay 第二天 博客园聚会
    2008 Oct MVP OpenDay 第二天 颁奖·讲座·晚会
  • 原文地址:https://www.cnblogs.com/maoyuanwai/p/9636516.html
Copyright © 2020-2023  润新知