webForumDet fria alternativet

Kolla efter dumma tecken i sträng

ASP

4 svar · 233 visningar · startad av Mungo

Medlem sedan jan. 2000372 inlägg
Frågan#1

Om jag har en sträng som jag vill endast ska få innehålla A-Z och 0-9 hur gör jag då egentligen?

Medlem sedan dec. 19998 577 inlägg
#2

Något sånthär?:

Val = "ABCDEFGHIJKLMNOPQURTUVWXYZ0123456789"
For i = 1 To Len(textsträng)
For j = 1 To Len(val)
If Mid(textsträng,i,1) = Mid(val,j,1) then
Exit for
bla = false
Else
bla = true
End If
Next
if bla = false then Exit for
Next

Detta är taget dirkt ur huvet så det kanske inte funkar så perfekt...

------------------
        )|(
       (o o)
-oo0-(_)-0oo-----
webeye.nu *hem*
vide@4sale.se

Medlem sedan dec. 19996 721 inlägg
#3

Helt klart en bra variant (några småfel), som dock kan blir lite processorintensiv med långa strängar.

Sedan är det ju frågan om man vill rensa bort olagliga tecken, eller varna om de finns där. Ska a-z få vara med (gemener)?

Lite bättre blir det om man skippar loop nummer två.

function checkbaddies(instring)
   retval=false
   Val = "ABCDEFGHIJKLMNOPQURTUVWXYZ0123456789"
   For i = 1 To Len(instring)
      if instr(Val,mid(instring,i,1))=0 then
      retval=true
      exit for
   next
   checkbaddies=retval   
Next

..eller så gör man det med reguljära uttryck. Här fick gemenerna vara med.

function checkbaddies(instring)
   retval=false
   Set regEx = New RegExp
   regEx.Pattern = "[^A-Za-z0-9]"
   regEx.Execute(instring)
   if regEx.Matches.count>0 then retval=true
   checkbaddies=retval
end function

Om man vill rensa så...

function killbaddies(instring)
   retval=""
   Val = "ABCDEFGHIJKLMNOPQURTUVWXYZ0123456789"
   For i = 1 To Len(instring)
      if instr(Val,mid(instring,i,1))>0 then retval=retval & mid(instring,i,1)
   next
   killbaddies=retval   
Next

..eller så gör man det med reguljära uttryck

function killbaddies(instring)
   retval=""
   Set regEx = New RegExp
   regEx.Pattern = "[^A-Za-z0-9]"
   regEx.Global=true   
   retval=regEx.Replace(instring,"")
   killbaddies=retval
end function

[Redigerat av emission den 12 jun 2000]

Medlem sedan dec. 19995 874 inlägg
#4

Hej!

Ett bra sätt om du har det i en input ruta är att kolla det med JavaScript (fel forum jag vet...).

Men skriver ändå hur man går tillväga.

[kod]
<script language="JavaScript">
function validate(field) {
var valid = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
var ok = "yes";
var temp;
for (var i=0; i<field.value.length; i++) {
temp = "" + field.value.substring(i, i+1);
if (valid.indexOf(temp) == "-1") ok = "no";
}
if (ok == "no") {
alert("Ogiltligt tecken! endast a-z, A-Z och 0-9 får förekomma i fältet.");
field.focus();
field.select();
}
}
</script>

Sen har du tex en input ruta så här:

<INPUT name="AnvNamn" size="40" onBlur="validate(this)">

Det gör att man inte kan gå ifrån rutan såvida man inte har skrivit rätt, och det är ju bra :e

------------------
Mvh
Patrik
aka Brimba

www.datormaklarna.se
patrik@datormaklarna.se

Medlem sedan jan. 2000372 inlägg
#5

Nja, om man stänger av javascript i sin webläsare eller har en gammal webläsare kan man komma förbi den där kollen.

Tack för all hjälp dock, alla! nu funkar det som det ska.

268 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
129 ms — ändringar (db)