30. september 2008 - 14:30
Der er
7 kommentarer og 1 løsning
"Dynamisk" tilføjelse til en regexp
Hej Har f.eks. denne, skrevet direkte i doc: var img_reg = /^["jpg","jpeg","gif"]+$/; Den vil jeg gerne bruge i en funktion, men uden at jeg på forhånd ved hvilke filtyper (endelser) der skal stå. function ok_fil(typer,str) { var img_reg = /^[+typer+]+$/; Den duer jo ikke! og det gør denne heller ikke: var img_reg = '/^['+typer+']+$/'; } funktionen er tænkt brugt i et "input type="file" a'la' onchange="return(ok_fil('"jpg","jpeg"',this.value);" Kan man overhovedet dynamisk tilføje udtryk til en regex? Lige nu bruger jeg split(',') og en for-løkke som returnerer true hvis den finder en match. Og kalder den så'n: onchange="return(ok_fil('jpg,jpeg',this.value);" Men vil helelre bruge en regex.
Annonceindlæg fra QNAP
30. september 2008 - 15:19
#1
Du kan godt tilføje dynamisk indhold til en RegExp. i stedet for at bruge det RegExp-string kan du prøve at bruge RegExp objektet. Så kan du gøre noget ala det her: function RegExpWithParams(pParam, pString) { var mRegExp = new RegExp('^[' + pParam + ']$'); var mBool = mRegExp.test(pString); return mBool; } Har ikke testet det, men sådan kan du i hvert fald tilføje parametre til en RegExp.
30. september 2008 - 21:56
#2
Det leger jeg lige med i morgen på et tidspunkt!
01. oktober 2008 - 06:31
#3
-- jeg forstår ikke hvordan den, du skriver som eksempel skulle kunne virke ?-) -- men f.eks. onchange="return(ok_fil('jpg,jpeg',this.value);" function ok_fil(formats, val){ formats = formats.split(",").join("|"); var reg = new RegExp("\\.(" + formats + ")$"); return reg.test(val); }
01. oktober 2008 - 06:35
#4
Ups, jeg kom til at gentage din tavetosse (men den ligesågodt elimineres !-) onchange="return ok_fil('jpg,jpeg',this.value);"
02. oktober 2008 - 09:11
#5
roenvings kunne jeg få til at fungere! Smid et svar! Og mange tak!!!
02. oktober 2008 - 09:59
#6
-- og den kunne skrives lidt tættere: formats = formats.replace(/,/g,"|"); Velbekomme '-)
02. oktober 2008 - 15:01
#7
Ok, og tak igen! :O)
02. oktober 2008 - 15:17
#8
-- og jeg takker for point ;~}
Vi tilbyder markedets bedste kurser inden for webudvikling