如何使用 excel 公式来验证自定义电子邮件地址?
How to use an excel formula to validate an customized email address?
我是 excel VBA 宏的新手,我只想修正 excel 公式来验证已自定义的电子邮件。例如,我找到的电子邮件必须以“@gmail.com”结尾,并且必须拒绝以下邮件项目;
- [无字]@gmail.com
- [space]@gmail.com
- xxx@gmail.com[任意字]
- xxx@gmail..com
- xxx@gmail/.com
- 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 对象上使用了后期绑定。这是个人喜好,当你需要分发项目时可能会派上用场。
我是 excel VBA 宏的新手,我只想修正 excel 公式来验证已自定义的电子邮件。例如,我找到的电子邮件必须以“@gmail.com”结尾,并且必须拒绝以下邮件项目;
- [无字]@gmail.com
- [space]@gmail.com
- xxx@gmail.com[任意字]
- xxx@gmail..com
- xxx@gmail/.com
- 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 对象上使用了后期绑定。这是个人喜好,当你需要分发项目时可能会派上用场。