zoukankan      html  css  js  c++  java
  • 正则表达式 验证邮件地址

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

    这个是网上找的表达式:

    ^([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个这样的字符串,也就是前面说的重复的结构

    然后测试,发现貌似还行

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

  • 相关阅读:
    随笔为什么还要想标题
    [GXYCTF2019]BabySQli
    [CISCN2019 华北赛区 Day2 Web1]Hack World
    20年美亚杯个人赛-ALICE_USB部分WRITE UP
    20年美亚杯个人赛-Alice LG Phone部分WRITE UP
    20年美亚杯个人赛-Alice_Laptop部分WRITE UP
    20年美亚杯WRITE UP
    18年美亚杯团体赛-C部分 WRITE UP
    v&n赛 ML 第一步(python解决)
    CTFHub web技能树 RCE
  • 原文地址:https://www.cnblogs.com/maoyuanwai/p/9636516.html
Copyright © 2011-2022 走看看