webForumDet fria alternativet

RegExp matches alltid noll

ASP

6 svar · 263 visningar · startad av LR^evil.sid

Medlem sedan maj 2002560 inlägg
Frågan#1

Tjena!

Jag vet att denna kod ( validEmail(email, errMsg) ) fungerade förut. Och med förr menar jag igår.

Problemet är att vad jag än skickar in med email så får samma fel. Jag har iofs bara provat
alfanumeriska, komman, @ och punkter, men det tycker jag inte skall spela någon roll.
myMatches.count är alltid noll om email är <>""

Varför?

Private Sub ChkUsrEml()
	Call SetCon()
	set rs = con.execute("select usr from members where usr = '"&username&"'")
	if not rs.eof Then errMsg = errMsg & "<li>Användarnamnet är upptaget</li>"

	set rs = con.execute("select eml from members where eml = '"&email&"'")
	if not rs.eof Then errMsg = errMsg & "<li>Mailadressen finns redan i databasen</li>"
End Sub

Private Sub validEmail(email, errMsg)
	Dim objRegExp, myMatches

	Set objRegExp        = New RegExp
	objRegExp.Global     = True
	objRegExp.IgnoreCase = True
	objRegExp.Pattern    = "^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"
	Set myMatches        = objRegExp.Execute(email)
	If  myMatches.count  = 0 Then errMsg = errMsg & "<li>Epostadressen är inte giltig</li>"
End Sub

If Trim(LCase(Request.Form("sendIt"))) = "skapa" Then
	Call ChkUsrEml()
	If f_name = "" Then errMsg = errMsg & "<li>Du måste uppge ditt förnamn</li>"
	If e_name = "" Then errMsg = errMsg & "<li>Du måste uppge ditt efternamn</li>"
	If username = "" Then errMsg = errMsg & "<li>Du måste ange ett användarnamn</li>"
	If Not pwd0 = pwd1 Then errMsg = errMsg & "<li>Lösenorden matchar inte</li>"
	If pwd0 = "" or pwd1 = "" Then errMsg = errMsg & "<li>Du måste ange ett lösenord</li>"
	If email <> "" Then
		Call validEmail(email, errMsg)
	Else
		errMsg = errMsg & "<li>Du måste ange en e-postadress</li>"
	End If
	If pos_lan <> "" Then
		If pos_lan = 0 Then errMsg = errMsg & "<li>Du måste välja ett län</li>"
	End If
	If Not LCase(accept) = "on" Then errMsg = errMsg & "<li>Du måste acceptera avtalet</li>"
	If errMsg <> "" Then errMsg = "<ul>" & errMsg & "</ul>"
End If
Medlem sedan dec. 19998 577 inlägg
#2

Du borde bara få en träff (om du inte skickar med flera adresser), därför borde du ha "If myMatches.count = 0 Then", om du vill ha felmeddelande när den inte träffar något, eller har jag missat något?

Medlem sedan maj 2002560 inlägg
#3

Jag vill att scriptet skall skrika när det inte är en giltig epostaddress.

Skickar bara in en adress åt gången

Medlem sedan dec. 19998 577 inlägg
#4

Alltså borde det bli rätt när den får en matchning, får den noll så har den ju inte hittat någon giltig adress.

Medlem sedan maj 2002560 inlägg
#5

Som det är nu spelar det ingen roll om det är en giltig eller ogiltig adress. Jag har provat med båda

Medlem sedan maj 2002560 inlägg
#6

Nu ser jag en ny sak.

Om användaren redan finns i databasen fungerar matchningen men om den inte gör det accepterar matchningen ogiltiga epostadresser.

?

Medlem sedan maj 2002560 inlägg
#7

Tänkte skriva igår men orkade inte.

Problemet är i alla fall löst nu. problmet låg inte i pattern utan i fel exekveringsordning.

260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)