webForumDet fria alternativet

Regexp endast tillåtna filnamn.

ASP

10 svar · 474 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Frågan#1

Jag skulle behöva en funktion för att byta ut förbjudna tecken i filnamn med en lämplig regexp pattern.
Ex. om man skriver "månadsbokföring.txt" så skall funktionen se till att byta ut ogiltiga bokstäver. ex. "m_nadsbokf_ring.txt"
Några tips?
Har letat lite men det verkar skralt.

Medlem sedan dec. 19998 577 inlägg
#2
([^a-zA-Z]\.)

... eller (med space)...

([^a-zA-Z\s\.])

Lägg till dom tecken du vill ha med.

Medlem sedan nov. 20017 144 inlägg
#3

Hur inplementeras det då, antar att det måste vara global.
Hur görs replacen med ex. underscore "_".
Vilka tecken är igentligen "gångbara" i filnamn (på webben)?

Medlem sedan dec. 20003 887 inlägg
#4
Function ReplaceBadChar(strText)
  Dim objRx

  Set objRx = New RegExp

  objRx.Global = True
  objRx.IgnoreCase = True
  objRx.Pattern = "([^a-zA-Z0-9\.])"

  ReplaceBadChar = objRx.Replace(strText, "_")
End Function

Response.Write ReplaceBadChar("hejhej på dig. ops")

Ovan skrivar ut hejhej_p__dig._ops

Tillåtna tecken i fallet är: Bokstäver (ej åäö), siffror samt '-', '_' och '.'.

Medlem sedan nov. 20017 144 inlägg
#5

Tack! Det var ju det jag behövde!

Medlem sedan nov. 20017 144 inlägg
#6

Märkte att det inte funkade att skriva varken "_" eller "-".
Hur skall jag få med dem i min pattern?

Not:
Jag ändrade:
ReplaceBadChar = objRx.Replace(strText, "_")
Till:
ReplaceBadChar = objRx.Replace(strText, "")

Medlem sedan dec. 20003 887 inlägg
#7

Oj jag glömde visst ändra mitt pattern :)

objRx.Pattern = "([^a-zA-Z0-9\.-_])"

Så, nu ska det fungera.

Medlem sedan nov. 20017 144 inlägg
#8

Ok, nu verkar allt funka utom utom "-".
Underscore funkar men "-" plockas bort.
Det verkar komplicerat det här med patterns.

Medlem sedan jan. 20032 285 inlägg
#9

Engine hade nog tänkt sig det såhär? :)

objRx.Pattern = "([^a-zA-Z0-9\.\-_])"
Medlem sedan nov. 20017 144 inlägg
#10

Thx! :)

Medlem sedan dec. 20003 887 inlägg
#11

Så menade jag nog ;) jag tänkte inte på att "-" tolkas som ett intervall om det står mellan [ och ].

256 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
126 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)