如何使用 excel 公式来验证自定义电子邮件地址?

How to use an excel formula to validate an customized email address?

我是 excel VBA 宏的新手,我只想修正 excel 公式来验证已自定义的电子邮件。例如,我找到的电子邮件必须以“@gmail.com”结尾,并且必须拒绝以下邮件项目;

  1. [无字]@gmail.com
  2. [space]@gmail.com
  3. xxx@gmail.com[任意字]
  4. xxx@gmail..com
  5. xxx@gmail/.com
  6. xxx@gmail/com

为了验证电子邮件地址,我编写了一个正则表达式,如下所示;

^([a-zA-Z0-9_\-\.]+)@(\b(gmail)\b)+(\.\b(com)\b)$

我尝试了不同的方法将这些正则表达式应用到像 =MATCH 这样的 excel 公式中,但它没有用。我只需要使用 excel 公式来完成此电子邮件验证。

如果有人可以帮助我,我将不胜感激?

在你使用正则表达式之前 excel;你需要在里面设置 VB 才能使用它。请按照以下步骤操作:

添加步骤VB对“Microsoft VB脚本正则表达式 5.5

的引用
  • Select“开发人员”选项卡(I cannot find this tab what to do?)

  • Select 来自 'Code' 功能区部分的“Visual Basic”图标

  • 在“Microsoft Visual Basic for Applications”中 window select 顶部菜单中的“工具”。

  • Select“参考资料”

  • 选中“Microsoft VBScript Regular Expressions 5.5”旁边的框以包含在您的工作簿中。

  • 单击“确定”。

  • 在“Project-VBAProject”窗格(位于编辑器window的左上角)中右键单击您的工作簿名称,然后select 从上下文菜单中插入 -> 模块。屏幕截图可能如下所示:

  • 现在;模块内部;粘贴以下函数。

Function simpleCellRegex(MyVal As String) As String
    
    Dim regEx As New RegExp

    'Below is the flag options'
    With regEx
        .Global = True
        .Pattern = "^[\w.-]+@gmail\.com$"
    End With

    If regEx.Test(MyVal) Then
        simpleCellRegex = "Matched"
    Else
        simpleCellRegex = "Not matched"
    End If

End Function

将整个工作簿保存为 Excel 启用宏的工作簿而不是 Excel 工作簿

就是这样。大功告成。

现在转到 excel sheet 并在公式选项卡中使用上面声明的宏。我用了

结果:

虽然您提到了要避免什么,但您并没有真正提到要匹配什么。很难想象您会想要匹配 ....@gmail.com___@gmail.com__.__@gmail.com 这样的东西,因此更安全一点的是:

^(?!_+(?:[.-]?_*)*)\w+(?:[-.]?\w+)*@gmail\.com$

在线查看Demo。它并不完美,但可以解决许多您实际需要匹配失败的情况。

要将其称为 UDF,您可以使用:

Function REGEXMATCH(str As String, pat As String) As Boolean
    
    With CreateObject("vbscript.regexp")
        .Global = True
        .Pattern = pat
        REGEXMATCH = .Test(str)
    End With

End Function

您现在可以使用 =REGEXMATCH(A1,"^(?!_+(?:[.-]?_*)*)\w+(?:[-.]?\w+)*@gmail\.com$")

调用它

注意我在 regexp 对象上使用了后期绑定。这是个人喜好,当你需要分发项目时可能会派上用场。