使用批处理验证文件中的电子邮件

时间:2018-05-05 17:48:41

标签: regex bash

我有一个包含电子邮件的文件,我需要验证它们。

序列是:

  1. 名字。
  2. 点。
  3. 姓氏。
  4. 数字(可选 - 同名)。
  5. 静态字符串域(@ utp.ac.pa)。
  6. 我写了这个:

    const

    它应与此电子邮件匹配:" anell.zheng@utp.ac.pa"

    但它也匹配:

    • test4@utp.ac.pa
    • 2anell@utp.ac.pa

    虽然他们不遵循这个顺序。我做错了什么?

2 个答案:

答案 0 :(得分:1)

你的正则表达式甚至不匹配第一封电子邮件。如果我正确理解您的要求,这应该有效:

[A-Za-z]+\.[A-Za-z]+[0-9]*@utp\.ac\.pa
  • 请注意,要匹配某个点,需要对其进行转义(即\.),因为. matches any character
  • 如果您不想匹配大写字母,可以摆脱A-Z

Try it online

如果这不是您想要的,请告诉我。

答案 1 :(得分:0)

正则表达式:^[A-Za-z]+\.[A-Za-z]+(?:_\d+)*@utp\.ac\.pa$

Demo

正则表达式详细信息:

  • ^断言一行开头的位置 匹配[A-Za-z] +下面列表中的单个字符 。匹配角色。字面意思(区分大小写) 匹配[A-Za-z] +下面列表中的单个字符
    • 量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪) 非捕获组(?:_ \ d +)*
    • 量词 - 在零和无限次之间匹配,尽可能多次,根据需要回馈(贪婪) _匹配字符_字面(区分大小写) \ d +匹配一个数字(等于[0-9])
    • 量词 - 在一次和无限次之间匹配,尽可能多次,根据需要回馈(贪婪) @utp字面匹配字符@utp(区分大小写) 。匹配角色。字面意思(区分大小写) ac匹配字符ac字面(区分大小写) 。匹配角色。字面意思(区分大小写) pa匹配字符pa字面(区分大小写) $断言行尾的位置