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. Denna funktion använder jag för att kolla om en mailaddress är riktig eller ej: 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. 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: Detta kanske hjälper dig liteHjälp med denna e-postvalideringsfunktionen
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
%>Sv: Hjälp med denna e-postvalideringsfunktionen
<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
MagnusTack så mycket...men
Nån som vet hur jag kommer åt detta?Men jag löste det
InStrRev(str, ".") > Len(str) - 2Sv: Hjälp med denna e-postvalideringsfunktionen
<?
$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