Hej, jag hade tänkt mig en teckenkontroll av ett inmatningsformulär. Tecknen a-ö, 0-9 och tecknet _ ska kunna användas. Resten av alla tecken som finns får ej användas. Jag tror att Det har du nog rätt i. Nu uppstod ett nytt problem. Efter jag har ändrat detta så får jag ständigt värdet False på funktionen. hmmm... varför inte använda reguljära uttryck(regular expressions) till detta??? Hmh, hur skulle funktionen se ut då? Testa detta uttryck: Såhär ser koden ut nu: hmmm... testa: Om du testar den på http://regexlib.com/RETester.aspx så får den No match på nästan allt. :\ även abc Fast jag tror jag löst det nu.Teckenkontroll av submitterat registreringsformulär
Så... ständigt returneras värdet true i min kod (misstänker jag).
<code>
'Inmatade teckenkontroll
ihopfalt = Request.Form("fornamn") & Request.Form("efternamn") & Request.Form("visningsnamn") & Request.Form("stad") & Request.Form("losenord")
if teckenkontroll(ihopfalt) = true Then
'... lägger inmatning till databas
else 'Ett otillåtet tecken har hittats i formuläret
Response.Write("Ett fel har uppstått, kontrollera de tecken du angivit i fälten.")
end if
</code>
<code>
public function teckenkontroll(tillkontroll)
Dim result, tecken, i
result = true
for i = 1 to len(tillkontroll)
tecken = asc(mid(tillkontroll, i, 1))
if NOT asc(tecken) >= asc("0") and tecken <= asc("9") Or _
asc(tecken) >= asc("a") and tecken <= asc("z") Or _
asc(tecken) >= asc("A") and tecken <= asc("Z") then
result = false
end if
if tecken = asc("å") Or _
tecken = asc("ä") OR tecken = asc("ö") OR _
tecken = asc("Å") Or _
tecken = asc("Ä") OR tecken = asc("Ö") then
result = true
end if
if result = false then
exit for
end if
next
teckenkontroll = result
end function
</code>
Se http://www.bmuweb.com/tips/henrik/registrering.asphttp://www.bmuweb.com/tips/henrik/registrering.asp</url> (databasen ej ordningställd)Sv: Teckenkontroll av submitterat registreringsformulär
<code>
if NOT (asc(tecken) >= asc("0") and tecken <= asc("9") ...
</code>
tolkas som
<code>
if (NOT (asc(tecken) >= asc("0")) and tecken <= asc("9") ...
</code>
Pröva därför att ändra till
<code>
if NOT (asc(tecken) >= asc("0") and tecken <= asc("9") Or _
asc(tecken) >= asc("a") and tecken <= asc("z") Or _
asc(tecken) >= asc("A") and tecken <= asc("Z")) then
result = false
end if
</code>Sv: Teckenkontroll av submitterat registreringsformulär
<code>
public function teckenkontroll(tillkontroll)
Dim result, tecken, i
result = true
for i = 1 to len(tillkontroll)
tecken = asc(mid(tillkontroll, i, 1))
if NOT (asc(tecken) >= asc("0") and tecken <= asc("9") Or _
asc(tecken) >= asc("a") and tecken <= asc("z") Or _
asc(tecken) >= asc("A") and tecken <= asc("Z")) then
result = false
end if
if tecken = asc("å") Or _
tecken = asc("ä") OR tecken = asc("ö") OR _
tecken = asc("Å") Or _
tecken = asc("Ä") OR tecken = asc("Ö") then
result = true
end if
if result = false then
exit for
end if
next
teckenkontroll = result
end function
</code>Sv: Teckenkontroll av submitterat registreringsformulär
Sv: Teckenkontroll av submitterat registreringsformulär
Något i stil med:
<code>
public function teckenkontroll(tillkontroll)
Dim Re
Set Re = New RegExp
Re.Pattern = "[^a-öA-Ö\d]"
teckenkontroll = Re.test(tillkontroll) = false
end function
</code>
Den verkar fungera, för stora och småbokstäver a-ö samt nummer. Fast jag hade hoppats på att man på något sätt skulle kunna tillåta undertstreck _
Dessutom är jag lite osäker på hur den hanterar att man använder a-ö i regexp. Med tanke på att åäö ligger lite avsides a-z i ascii tabellen, om regexp använder ascii tabellen för att undersöka det hela. Sv: Teckenkontroll av submitterat registreringsformulär
<code>
Re.Pattern = "^([1-zA-Z0-1_åäöÅÄÖ]{1,255})$"
</code>Sv: Teckenkontroll av submitterat registreringsformulär
<code>
public function teckenkontroll(tillkontroll)
Dim Re
Set Re = New RegExp
Re.Pattern = "^([1-zA-Z0-1_åäöÅÄÖ]{1,255})$"
teckenkontroll = Re.test(tillkontroll) = true
end function
</code>
Den tillåter dock @
Se:
http://regexlib.com/RETester.aspx (titta gärna vidare på sidan)
testa med ^([1-zA-Z0-1_åäöÅÄÖ]{1,255})$Sv: Teckenkontroll av submitterat registreringsformulär
<code>
^([A-Z0-9a-z_åäöÅÄÖ]{1,255})$
</code>Sv: Teckenkontroll av submitterat registreringsformulär
Sv: Teckenkontroll av submitterat registreringsformulär
<code>
^([A-Za-z0-9åäö_ÅÄÖ]{1,255})$
</code>