|
| RegExp - hvad gør jeg forkert Fra : Rune Jensen |
Dato : 26-11-07 15:01 |
|
Efter tip herfra gruppen, vil jeg nu forsøge mig med Regular Expression. Jeg
har en variabel, varName, som, hvis den indeholder andet end tal, mellemrum
og bogstaver, skal erstatte disse ugyldige tegn med "" (dvs. ingenting). Jeg
har følgende kode, men den virker ikke helt:
dim rgx
Set rgx = New RegExp
rgx.pattern = "\b[^A-Z^a-z^0-9^_^\s]+\b"
rgx.ignorecase = true
varName= rgx.replace (varName, "")
set rgx = nothing
....for det lader til, den ikke søger på hele strengen varName, men kun tager
det første "ord". Er der en lettere metode/pattern, og nogle, som så kan
give en lille forklaring?
Følgende tilfældige streng...
abcABC123!"# !"#abc#¤ abc ABC
....skal jo f.eks. så se sådan ud:
abcABC123 abc abc ABC
....når det har været igennem en replace.
Skal lige siges, jeg er rimelig grøn, men har kigget på siden med regular
expressions, som Jens anbefalede for de referencer, jeg har brugt. Sikkert
bare ikke brugt rigtigt
MVH
Rune Jensen
| |
Jens Gyldenkærne Cla~ (26-11-2007)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 26-11-07 20:46 |
|
Rune Jensen skrev:
> Set rgx = New RegExp
> rgx.pattern = "\b[^A-Z^a-z^0-9^_^\s]+\b"
> rgx.ignorecase = true
> varName= rgx.replace (varName, "")
> set rgx = nothing
>
> ...for det lader til, den ikke søger på hele strengen varName,
> men kun tager det første "ord".
Egenskaben Global er det du leder efter:
rgx.Global = True
Se beskrivelse på http://www.regular-expressions.info/vbscript.html
--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information
| |
Rune Jensen (28-11-2007)
| Kommentar Fra : Rune Jensen |
Dato : 28-11-07 01:59 |
|
"Jens Gyldenkærne Clausen" skrev...
> Rune Jensen skrev:
>
>> Set rgx = New RegExp
>> rgx.pattern = "\b[^A-Z^a-z^0-9^_^\s]+\b"
>> rgx.ignorecase = true
>> varName= rgx.replace (varName, "")
>> set rgx = nothing
>>
>> ...for det lader til, den ikke søger på hele strengen varName,
>> men kun tager det første "ord".
>
> Egenskaben Global er det du leder efter:
Ja, du har ret (selvfølgelig). Takker, så ser jeg på det
BTW mon det er muligt at sætte en testside op, som tester et givent pattern
i et text-area, så man kan prøve sig frem - jeg tænker på, hvad skal jeg
tage højde for, også sikkerhedsmæssigt: findes der error-catching på
reg-exp? Jeg har været ude for, en ikkevalid pattern crashede min side.
Forslaget er meget simpelt en form med et felt til input af patternstreng og
et text.area med selvvalgt text, som strengen virker på. Vil det være
forsvarligt?
MVH
Rune Jensen
| |
Rune Jensen (28-11-2007)
| Kommentar Fra : Rune Jensen |
Dato : 28-11-07 03:47 |
|
"Rune Jensen" skrev...
> "Jens Gyldenkærne Clausen" skrev...
>> Egenskaben Global er det du leder efter:
>
>
> Ja, du har ret (selvfølgelig). Takker, så ser jeg på det
Første del af problemet er dermed løst, idét...
Set rgx = New RegExp
rgx.Global = true
rgx.pattern = "[^\w\s\æ\ø\å\Æ\Ø\Å]"
rgx.ignorecase = true
varName= rgx.replace (varName, "")
set rgx = nothing
....så vidt jeg kan se, stripper alt, som ikke er bogstav+danske karakterer
eller space væk. Strengen skal også indeholde navn, så det er fint-fint. Her
kommer ingen hackere vidst ind
Anden del af spørgsmålet (det nye spørgsmål) - jeg har søgt og søgt, men har
endnu ikke fundet noget om error-handling af regexp, som var noget værd
Så jeg laver nok bare en test-side for mig selv.)
MVH
Rune Jensen
| |
Jens Gyldenkærne Cla~ (28-11-2007)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 28-11-07 13:28 |
|
Rune Jensen skrev:
> rgx.pattern = "[^\w\s\æ\ø\å\Æ\Ø\Å]"
æøåÆØÅ behøver vist ikke nogen escapetegn:
rgx.pattern = "[^\w\sæøåÆØÅ]"
- burde give det samme.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Jens Gyldenkærne Cla~ (28-11-2007)
| Kommentar Fra : Jens Gyldenkærne Cla~ |
Dato : 28-11-07 13:26 |
|
Rune Jensen skrev:
> BTW mon det er muligt at sætte en testside op, som tester et
> givent pattern i et text-area, så man kan prøve sig frem
Noget a la det her: < http://gyros.dk/usenet/asp/regex.asp>
Se også < http://www.regular-expressions.info/vbscriptexample.html>
(der skal køres i IE for at fungere),
> tænker på, hvad skal jeg tage højde for, også
> sikkerhedsmæssigt: findes der error-catching på reg-exp? Jeg
> har været ude for, en ikkevalid pattern crashede min side.
Får du regex'et (helt eller delvist) ind via en form? I så fald kan
der nok være brug for noget validering. Det kan formentlig laves
med et andet regex hvor du opstiller reglerne for hvordan dit
pattern må se ud.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html
| |
Rune Jensen (06-12-2007)
| Kommentar Fra : Rune Jensen |
Dato : 06-12-07 11:18 |
|
Jens Gyldenkærne Clausen" skrev...
> Rune Jensen skrev:
>
>> BTW mon det er muligt at sætte en testside op, som tester et
>> givent pattern i et text-area, så man kan prøve sig frem
>
> Noget a la det her: < http://gyros.dk/usenet/asp/regex.asp>
Ja. Det kunne godt ligne.
> Se også < http://www.regular-expressions.info/vbscriptexample.html>
> (der skal køres i IE for at fungere),
>
>
>> tænker på, hvad skal jeg tage højde for, også
>> sikkerhedsmæssigt: findes der error-catching på reg-exp? Jeg
>> har været ude for, en ikkevalid pattern crashede min side.
>
> Får du regex'et (helt eller delvist) ind via en form? I så fald kan
> der nok være brug for noget validering. Det kan formentlig laves
> med et andet regex hvor du opstiller reglerne for hvordan dit
> pattern må se ud.
Ja, det er tanken at få det via en form, og behandle det hele serverside -
altså ingen JavaScript. Men det er svært at sikre validt input 100% med
RegExp, hvis man skal tage højde for alt? Jeg tænkte på som supplement sådan
en on error... som man kunne fange, hvis serveren går i baglås?
MVH
Rune Jensen
| |
|
|