Email Validation

  • Thread starter Thread starter Steve Stad
  • Start date Start date
S

Steve Stad

I was testing this email validation rule.
Is Null Or ((Like "*?@?*.com") Or (Like "*?@?*.org") Or (Like "*?@?*.net")
Or (Like "*?@?*.mil") Or (Like "*?@?*.US") And (Not Like "*[ ,;]*" And Not
Like "*.@*"))

...but noticed I was able to input (e-mail address removed)
... e.g., I was trying to prevent user typing a .@ [that is a dot@] using
the ... And Not Like "*.@*")) .. but it must be getting cancelled out by
something previous in the validation string. Any suggestions?
 
You could use a routine such as:

Public Function isValidEmail(inEmailAddress As String) As Boolean
On Error GoTo Error_Handler
' Author: Unknown

If (Len(inEmailAddress) = 0) Then
MsgBox "Please enter your email address."
isValidEmail = False
Exit Function
End If
If (InStr(1, inEmailAddress, "@") = 0) Then
MsgBox "The '@' is missing from your e-mail address."
isValidEmail = False
Exit Function
End If
If (InStr(1, inEmailAddress, ".") = 0) Then
MsgBox "The '.' is missing from your e-mail address."
isValidEmail = False
Exit Function
End If

If (InStr(inEmailAddress, "@.") > 0) Then
MsgBox "There is nothing between '@' and '.'"
isValidEmail = False
Exit Function
End If
If (InStr(inEmailAddress, ".@") = 1) Then
MsgBox "Your e-mail cannot start by '.@'"
isValidEmail = False
Exit Function
End If
If ((InStr(inEmailAddress, ".")) = ((Len(inEmailAddress)))) Then
MsgBox "There has to be something after the '.'"
isValidEmail = False
Exit Function
End If

If ((Len(inEmailAddress)) < (InStr(inEmailAddress, ".") + 2)) Then
MsgBox "There should be two letters after the '.'"
isValidEmail = False
Exit Function
End If

If (InStr(1, inEmailAddress, "@") = 1) Then
MsgBox "You have to have something before the '@'"
isValidEmail = False
Exit Function
End If

isValidEmail = True

Error_Handler_Exit:
On Error Resume Next
Exit Function

Error_Handler:
MsgBox "MS Access has generated the following error" & vbCrLf & vbCrLf &
"Error Number: " & _
Err.Number & vbCrLf & "Error Source: isValidEmail" & vbCrLf & "Error
Description: " & _
Err.Description, vbCritical, "An Error has Occured!"
Resume Error_Handler_Exit
End Function
--
Hope this helps,

Daniel Pineault
http://www.cardaconsultants.com/
For Access Tips and Examples: http://www.devhut.net
Please rate this post using the vote buttons if it was helpful.
 
There are way too many valid variations for a validation rule like that,
e.g. .COM, .INFO, .NET, .ORG, .ME, .MOBI, .BIZ, .MX, .WS, .NAME,
..BZ, .COM.BZ, .NET.BZ, .CC, .ES, .COM.ES, .NOM.ES, .ORG.ES, .COM.MX,
..NL, .TV, as well as lots of other country codes.
 
Daniel,

Thank you for the code sample. Just wondering where (what event) to place
the code. I would assume the AfterUpdate() event but since I am not a
programmer I need to ask. Also, I assume I need to change 'inEmailAddress'
in the code to my field name 'EMP_EMAIL_ADDRESS'.

Daniel Pineault said:
You could use a routine such as:

Public Function isValidEmail(inEmailAddress As String) As Boolean
On Error GoTo Error_Handler
' Author: Unknown

If (Len(inEmailAddress) = 0) Then
MsgBox "Please enter your email address."
isValidEmail = False
Exit Function
End If
If (InStr(1, inEmailAddress, "@") = 0) Then
MsgBox "The '@' is missing from your e-mail address."
isValidEmail = False
Exit Function
End If
If (InStr(1, inEmailAddress, ".") = 0) Then
MsgBox "The '.' is missing from your e-mail address."
isValidEmail = False
Exit Function
End If

If (InStr(inEmailAddress, "@.") > 0) Then
MsgBox "There is nothing between '@' and '.'"
isValidEmail = False
Exit Function
End If
If (InStr(inEmailAddress, ".@") = 1) Then
MsgBox "Your e-mail cannot start by '.@'"
isValidEmail = False
Exit Function
End If
If ((InStr(inEmailAddress, ".")) = ((Len(inEmailAddress)))) Then
MsgBox "There has to be something after the '.'"
isValidEmail = False
Exit Function
End If

If ((Len(inEmailAddress)) < (InStr(inEmailAddress, ".") + 2)) Then
MsgBox "There should be two letters after the '.'"
isValidEmail = False
Exit Function
End If

If (InStr(1, inEmailAddress, "@") = 1) Then
MsgBox "You have to have something before the '@'"
isValidEmail = False
Exit Function
End If

isValidEmail = True

Error_Handler_Exit:
On Error Resume Next
Exit Function

Error_Handler:
MsgBox "MS Access has generated the following error" & vbCrLf & vbCrLf &
"Error Number: " & _
Err.Number & vbCrLf & "Error Source: isValidEmail" & vbCrLf & "Error
Description: " & _
Err.Description, vbCritical, "An Error has Occured!"
Resume Error_Handler_Exit
End Function
--
Hope this helps,

Daniel Pineault
http://www.cardaconsultants.com/
For Access Tips and Examples: http://www.devhut.net
Please rate this post using the vote buttons if it was helpful.



Steve Stad said:
I was testing this email validation rule.
Is Null Or ((Like "*?@?*.com") Or (Like "*?@?*.org") Or (Like "*?@?*.net")
Or (Like "*?@?*.mil") Or (Like "*?@?*.US") And (Not Like "*[ ,;]*" And Not
Like "*.@*"))

..but noticed I was able to input (e-mail address removed)
.. e.g., I was trying to prevent user typing a .@ [that is a dot@] using
the ... And Not Like "*.@*")) .. but it must be getting cancelled out by
something previous in the validation string. Any suggestions?
 
Back
Top