MS Access从文本框中删除所有内容*但是*电子邮件地址

时间:2011-04-28 13:43:18

标签: ms-access access-vba

我在Access Db中有一个文本框,用户应该输入一个电子邮件地址。这是通过从Outlook 2010复制完成的。不幸的是,该副本还带有名称和尖括号。 Fred Bloggs <fred@bloggs.co.uk>

我希望使用这个正则表达式

.pattern = "[\w-\.]{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,3}"

标识电子邮件地址

但如果没有输入有效的电子邮件地址,我将如何剥离其他所有内容并抛出错误?谢谢!

2 个答案:

答案 0 :(得分:0)

Microsoft Access VBA没有内置的Regex引擎。但是,您可以添加对 VBScript正则表达式库的引用并使用该引用。

以下是解释如何执行此操作的相关问题:

答案 1 :(得分:0)

如果电子邮件始终包含在最终<>中,您可以

Public Function fmt(email As String) As String
pos = InStrRev(email, "<")
If (pos > 0) Then
   email = Mid$(email, 1 + pos, 1 + Len(email) - pos)
   email = Left$(email, Len(email) - 1)
End If
fmt = email
End Function

replace(mid(email,instrrev(email,"<")+1,len(email)),">","")

编辑;

对于正则表达式检查,添加对“Microsoft VBScript正则表达式库”的引用(工具&gt;引用)和;

Public Function fmt(email As String) As String
pos = InStrRev(email, "<")
If (pos > 0) Then
   email = Mid$(email, 1 + pos, 1 + Len(email) - pos)
   email = Left$(email, Len(email) - 1)
End If
fmt = email
With New RegExp
    .Global = True
    .IgnoreCase = True
    .MultiLine = True
    .Pattern = "^\S+@\S+\.\S+$"
    If Not .Test(fmt) Then fmt = ""
End With
End Function

返回有效的电子邮件地址,如果无效,则返回“”。

我放弃你的RE;推理:Using a regular expression to validate an email address