代码之家  ›  专栏  ›  技术社区  ›  TimS

来自电子邮件地址的域的正则表达式

  •  10
  • TimS  · 技术社区  · 16 年前

    例如,对于“的输入”test@example.com我需要一个“example.com”的输出。

    干杯

    8 回复  |  直到 16 年前
        1
  •  16
  •   Stephan202 Alex Martelli    16 年前

    为此,正则表达式是一个相当繁重的机器。只需将包含电子邮件地址的字符串拆分为 @ 角色,然后进行下半场(电子邮件地址保证只包含一个 字符。)

        2
  •  14
  •   Xetius    16 年前

    这将与@匹配,然后捕获所有内容,直到输入结束($)

        3
  •  4
  •   Paul Lammertsma    16 年前

    [a-zA-Z][\w\.-]*[a-zA-Z0-9]@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])
    

    注意,它只捕获域组;如果您使用以下命令,则可以捕获继续执行操作的零件 @ 也:

    ([a-zA-Z][\w\.-]*[a-zA-Z0-9])@([a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z])
    

    我不确定这是否符合RFC 2822,但我对此表示怀疑。

        4
  •  3
  •   Neil McGuigan    12 年前

    哇,这里的答案都不对。

    例如,这是一个有效的电子邮件地址:

    user@example.com(i'm a comment (with an @))
    

    因此,首先,在结尾处解析出所有注释。

    int atIndex = emailAddress.LastIndexOf("@");
    String domainPart = emailAddress.Substring(atIndex + 1);
    
        5
  •  2
  •   Andre Pastore    16 年前

    用于输入的简单正则表达式是:

    ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$
    

    但是,当你申请一个广泛而异构的领域时,它可能是无用的。

    ^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.(?:[A-Z]{2}|com|org|net|gov|mil|biz|info|mobi|name|aero|jobs|museum)$
    

    但是,您可以根据需要优化后缀域。

    但对于后缀的需要,您只需要:

    @.+$

    资源: http://www.regular-expressions.info/email.html

        6
  •  1
  •   Hardik Sondagar    13 年前
    $input=hardiksondagar@gmail.com;
    // now you want to fetch gmail from input user PHP's inbuilt function 
    preg_match('/@(.*)/', $input, $output);
    echo $output[1]; // it'll print "gmail.com"
    
        7
  •  1
  •   Spontifixus    13 年前

    请尝试以下正则表达式:

    (?<=([\w-\.]@))((?:[\w]+\.)+)([a-zA-Z]{2,4})
    
        8
  •  0
  •   Mikael    10 年前
    (@)(\w+\-|\w+)+(\.)
    

    我不是专家,但至少据我所知,上面的表达是你从电子邮件中获取域名所需要的。

    $1newdomain$3
    

    http://www.regexr.com/

    上面的站点是一个尝试regex的好地方,可以看看它是如何工作的以及是否工作的。

        9
  •  0
  •   0m3r    6 年前

    另一个简短的例子是 @([\w.-]+)\.

    https://regex101.com/r/gmOH52/2