从文本框中删除除电子邮件地址之外的所有内容
Posted
技术标签:
【中文标题】从文本框中删除除电子邮件地址之外的所有内容【英文标题】:Strip everything but an email address from a text box 【发布时间】:2011-04-28 13:43:18 【问题描述】:我在 Access Db 中有一个文本框,用户应在其中输入电子邮件地址。这是通过从 Outlook 2010 复制来完成的。不幸的是,该副本还带有名称和尖括号 Fred Bloggs <fred@bloggs.co.uk>
我希望使用这个正则表达式
.pattern = "[\w-\.]1,\@([\da-zA-Z-]1,\.)1,[\da-zA-Z-]2,3"
识别电子邮件地址。
如果没有输入有效的电子邮件地址,我将如何剥离其他所有内容并引发错误?
【问题讨论】:
【参考方案1】:Microsoft Access VBA 没有内置的正则表达式引擎。但是,您可以添加对 VBScript 正则表达式库的引用并使用它。
这是一个相关的问题,解释了如何做到这一点:
Regular Expressions in MS Access VBA?【讨论】:
后期绑定优于创建引用。 @David:嗯,这取决于:对于开发,早期绑定有很大帮助(IntelliSense 等),特别是对于不熟悉库对象模型的经验不足的开发人员.当然,对于部署来说,切换到后期绑定可以省去很多麻烦。 我致力于为我的客户提供简单可靠的服务。有时这意味着我作为开发人员必须更加努力。 @David:嗯,在编译时发现错误也提高了代码的可靠性。 ;-) 但是是的,总的来说我同意你的看法。【参考方案2】:如果电子邮件始终包含在最后的<>
中,您可以
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 正则表达式库”的引用(工具 > 引用)和;
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
【讨论】:
感谢您的回复!就是这样,直接从 Outlook 粘贴到<>
,但有时用户会尝试不输入任何内容,有时会正确输入。我正在寻找一个我认为将涵盖所有基础的子/功能。但也许你的方案可以用,我就是不知道怎么实现?
RegEx 库最好使用后期绑定,你不觉得吗?以上是关于从文本框中删除除电子邮件地址之外的所有内容的主要内容,如果未能解决你的问题,请参考以下文章