Hjälp med denna e-postvalideringsfunktionen
Funktionen nedan returnerar True om strängen är en korrekt e-postadress och False om det inte är det. MEN... det är två buggar i den som jag inte kan fixa, och jag hoppas nån kan hjälpa mig.
Buggarna är:
1. Kontrollerar inte om något är före @. Det borde den göra.
2. Tillåter inte en punkt FÖRE @, utan kollar bara om punkten kommer efter @.
Någon hjälpsam själ?
<%
Private Function IsEmail(byVal mailaddress)
Dim tmp, x, y, bErr, tmp2, objReg
Dim objMatch, z, i
bErr = False
tmp = Trim( mailaddress )
tmp = CStr( mailaddress )
' minimum 6 characters...
if len(tmp) < 6 then
IsEmail = False
Exit Function
end if
' need an @ but only 1 is allowed
If instr(tmp, "@") then
x = instr(tmp, "@")
y = instr(x + 1, tmp, "@")
On Error Resume Next
y = CLng(y)
If Err Then bErr = True Else bErr = False
On Error GoTo 0
If bErr Then
IsEmail = False
Exit Function
End If
if y <> 0 then
IsEmail = False
Exit Function
end if
Else
IsEmail = False
Exit Function
End If
' the "." must come after the "@"
If InStr( Left( tmp, CLng(x) ), "." ) Then
IsEmail = False
Exit Function
Else
tmp2 = Right( tmp, Len(tmp) - CLng(x) )
If InStr( tmp2, "." ) Then
' must have at least one character between @ and .
Set objReg = New RegExp
With objReg
.Global = True
.IgnoreCase = True
.Pattern = "[A-Z]|[0-9]"
Set objMatch = .Execute(tmp2)
End With
If objMatch.Count = 0 then
IsEmail = False
Exit Function
End If
Set objMatch = Nothing
Set objReg = Nothing
Else
IsEmail = False
Exit Function
End If
End If
' needs to have at least 2 characters (letters) after the .
z = InStr( tmp, "." )
tmp2 = Right( tmp, Len(tmp) - z )
Set objReg = New RegExp
With objReg
.Global = True
.IgnoreCase = True
.Pattern = "[A-Z][A-Z]"
Set objMatch = .Execute(tmp2)
End With
If objMatch.Count = 0 then
IsEmail = False
Exit Function
End If
Set objMatch = Nothing
Set objReg = Nothing
' check for illegal characters
For i = 1 to Len(tmp)
tmp2 = Mid( tmp, i, 1 )
Select Case tmp2
Case "(", ")", ";", ":", ",", "/", "'", chr(34), _
"~", "`", "!", "#", "$", "%", "^", "&", "*", _
"+", "=", "[", "]", "{", "}", "|", "\", "?", _
" ", "<", ">"
IsEmail = False
Exit Function
Case Else
End Select
Next
' if an address makes it through, it's an email address
IsEmail = True
End Function
%>
Svara
Sv: Hjälp med denna e-postvalideringsfunktionen
Denna funktion använder jag för att kolla om en mailaddress är riktig eller ej:
<kod>
'-- check the email-address -----------------------------------------------
set oReg = new RegExp
oReg.pattern = "^[\w\.-]+@[\w\.-]+\.[a-zA-Z]+$"
bResult = oReg.Test(sEmail)
if not bResult then
set oReg = nothing
response.redirect "/page_error.asp?errorId=10001"
end if
set oReg = nothing
</kod>
Ser lättare ut en den du har men kanske inte kollar lika nogrant, är inte så bra på pattern men tro att den säger att det måste finnas tecken innan @ samt att det kan finnas en punkt med. Efter @ finns tecken samt att det måste finnas minst en punkt och sedan tecken mellan a-z
MVH
Magnus
Svara
Tack så mycket...men
Det såg ut att fungera utmärkt... men sen upptäckte jag att denna kod inte kollar så att det finns minst 2 tecken efter sista punkten.
Nån som vet hur jag kommer åt detta?
Svara
Men jag löste det
Helt plötsligt fick jag kunskaper. Så här gjorde jag för att lösa detta efter att jag kört ovanstående pattern:
InStrRev(str, ".") > Len(str) - 2
Svara
Sv: Hjälp med denna e-postvalideringsfunktionen
Detta kanske hjälper dig lite
<?
$namn = $_POST['namn'];
$epost = $_POST['epost'];
if (eregi("^[A-Za-z0-9\-\_\.]{1,}@{1}[A-Za-z0-9\-\_\.]{1,}\.{1}[a-zA-Z]{2,4}$",$epost)){
echo "<p>";
echo "Namn: ";
echo $namn;
echo "</p>";
echo "<p>";
echo "Epost: ";
echo $epost;
echo "</p>";
echo "<p>";
echo "Du matade in en giltig epostadress";
echo "</p>";
} else{
echo "<p> Epostadressen är ogiltig. </P>";
}
?>
Denna tar det mesta
Svara