禁止使用特殊字符,但' @'在电子邮件验证公式

时间:2015-11-25 14:27:19

标签: excel email excel-formula excel-2010 excel-2007

我有这个公式来验证Excel的电子邮件地址:

=AND(ISERROR(FIND(" ",[Send Report To],1)),IF(ISERROR(FIND("@",[Send Report To],2)),FALSE,AND(ISERROR(FIND("@",[Send Report To],FIND("@",[Send Report To],2)+1)),IF(ISERROR(FIND(".",[Send Report To],FIND("@",[Send Report To],2)+2)),FALSE,FIND(".",[Send Report To],FIND("@",[Send Report To],2)+2)<LEN([Send Report To])))))

但是当我输入此电子邮件ID时失败:sandy,rocks@gmail.comsandy.rocks@gmail,co.uk

任何人都可以修改上面的验证公式,以避免电子邮件地址中的逗号等特殊字符吗?

3 个答案:

答案 0 :(得分:1)

请看这个公式。您可以在参数中添加更多特殊字符。我刚刚添加了#34;!,@,#,$,%,^&#34;这些人物。

=IF(OR(ISNUMBER(SEARCH(",",A1)),ISNUMBER(SEARCH("$",A1)),ISNUMBER(SEARCH("!",A1)),ISNUMBER(SEARCH("%",A1)),ISNUMBER(SEARCH("^",A1)),ISNUMBER(SEARCH("#",A1)),ISNUMBER(SEARCH("@",A1,SEARCH("@",A1)+1))),FALSE,TRUE)

<强>截图

enter image description here

答案 1 :(得分:0)

我认为使用内置公式

很难

相反,带正则表达式的UDF适合确保电子邮件模式匹配。

请参阅此问题的答案https://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops

详细解释了细节和例子。请阅读该帖子。

基于这个答案,这是我提出的UDF

Function simpleCellRegex(Myrange As Range) As Boolean
    Dim regEx As New RegExp
    Dim strPattern As String
    Dim strInput As String

    strPattern = "^[a-z][a-z0-9\._]+@[a-z]+\.[a-z]+\.?[a-z]+$"


    If strPattern <> "" Then
        strInput = LCase(Myrange.Value)

        With regEx
            .Global = True
            .MultiLine = False
            .IgnoreCase = True
            .Pattern = strPattern
        End With

        simpleCellRegex = regEx.Test(strInput)

    End If

    Set regEx = Nothing
End Function

答案 2 :(得分:0)

答案是根据Haruns的建议。这确实有效

= IF(或(ISNUMBER(搜索(&#34;,&#34;,[发送报告])),ISNUMBER(搜索(&#34; $&#34;,[发送报告]) ),ISNUMBER(搜索(&#34;!&#34;,[发送报告])),ISNUMBER(搜索(&#34;%&#34;,[发送报告])),ISNUMBER(搜索( &#34; ^&#34;,[发送报告])),ISNUMBER(搜索(&#34;#&#34;,[发送报告])),ISNUMBER(搜索(&#34; @& #34;,[发送报告],搜索(&#34; @&#34;,[发送报告])+ 1))),FALSE,TRUE)