禁止在电子邮件validation公式中使用“@”以外的特殊字符
我有这个公式validationExcel的电子邮件地址:
=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])))))
但是,当我input这个电子邮件ID: sandy,rocks@gmail.com
或sandy.rocks@gmail,co.uk
时会失败。
任何人都可以修改上面的validation公式,以避免电子邮件地址中的逗号等特殊字符?
请看这个公式。 你可以添加更多的特殊字符或参数。 我刚刚添加了“!,@,#,$,%,^”这些字符。
=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)
截图
我认为这是一个内置的公式很难
相反,使用正则expression式的UDF适合确保电子邮件模式匹配。
很好地解释了细节和例子。 请阅读该post。
基于这个答案,这里是我提出的UDF
Function simpleCellRegex(Myrange As Range) As Boolean Dim regEx As New RegExp Dim strPattern As String Dim strInput As String strPattern = "^[az][a-z0-9\._]+@[az]+\.[az]+\.?[az]+$" 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
答案是按照Haruns的build议。 这确实有效
= IF(OR(ISNUMBER(SEARCH(“,”,[Send Report To]))),ISNUMBER(SEARCH(“$”,[Send Report To])),ISNUMBER ),ISNUMBER(SEARCH(“%”,[Send Report To])),ISNUMBER(SEARCH(“^”,[Send Report To])),ISNUMBER(SEARCH(“#”,[Send Report To])) ,search(“@”,[发送报告至],search(“@”,[发送报告至])+ 1))),假,真)