Avatar billede showsource Seniormester
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.
Avatar billede keenkbh Nybegynder
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.
Avatar billede showsource Seniormester
30. september 2008 - 21:56 #2
Det leger jeg lige med i morgen på et tidspunkt!
Avatar billede roenving Novice
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);
}
Avatar billede roenving Novice
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);"
Avatar billede showsource Seniormester
02. oktober 2008 - 09:11 #5
roenvings kunne jeg få til at fungere!

Smid et svar!
Og mange tak!!!
Avatar billede roenving Novice
02. oktober 2008 - 09:59 #6
-- og den kunne skrives lidt tættere:

formats = formats.replace(/,/g,"|");

Velbekomme '-)
Avatar billede showsource Seniormester
02. oktober 2008 - 15:01 #7
Ok, og tak igen! :O)
Avatar billede roenving Novice
02. oktober 2008 - 15:17 #8
-- og jeg takker for point ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester