Avatar billede aerobee Nybegynder
21. november 2009 - 15:20 Der er 7 kommentarer og
2 løsninger

Reg exp (tjek format af streng)

Hej
Jeg er ikke så god til regxp.
Jeg skal brug en regular expression som tjekker op på om en tekst streng er formateret på en bestemt måde.

Syntax for den tekst streng der skal tjekkes op på er følgende:
x = der kan stå alt

pl('content:xxx:loading');

Vil gerne at expressionen tjekker op på ovenstående syntax inklusive ( ) ' : og ;. Altså strengen skal indeholde PRÆCIS ovenstående hvor der hvor der står xxx kan der stå alt. Med alt menes a-z A-Z 0-9 . ? &

Kan det lade sig gøre ?
Avatar billede repox Seniormester
21. november 2009 - 16:29 #1
Prøv denne:


/^pl\(\'content\:[^\:]+\:loading\'\)\;$/

21. november 2009 - 17:23 #2
aerobee (and repox) jeg var selv ved at bakse med denne her for egen oevelse.  Lad mig kommentere, aerobee, at det kan misforstaas hvad du vil have.  Foerst siger du at "xxx kan staa for alt."  Derefter begraenser du xxx til [a-zA-Z0-9.?&.  Og saa var jeg selv i tvivl om xxx skulle vaere tre tegn eller kunne vaere et hvilket som helst antal tegn.  repox's losening tillader at xxx staar for en eller mere tegn uden begraensning, altsaa ogsaa for eksempel @ eller # som falder udenfor den begraensning du satte op.  Den foelgende regex begraenser xxx til precis 3 tegn indenfor de begraensninger du saetter op:

/^pl\('content:[a-zA-Z0-9.?&]{3}:loading'\);$/

Hvis du vil have xxx til at vaere et eller flere tegn udskiftes {3} med +.  Hvis det tillades at xxx kan vaere 0 eller flere tegn udskiftes {3} med *.

Saa synes det, paa min version af php, ikke at vaere noedvendig at escape ' : eller $

For at oeve mig og teste lavede jeg denne hjemmeside:  http://christianjorgensen.be/aerobee.php.  Der tester jeg med denne kode: 

<?
/*expression indfoeres her:*/
$expr = "pl('content:&t7:loading');";
/*tester expression her*/
if( preg_match ("/^pl\('content:[a-zA-Z0-9.?&]{3}:loading'\);$/", $expr)) echo "matches<br/>";
else echo "no match<br/>";

?>

Haaber at dette er en nyttig tilfoejende kommentar.
Avatar billede aerobee Nybegynder
21. november 2009 - 17:47 #3
Hej Christian
Tak for din kommentar :) Ja jeg kan godt se at jeg har udtrykt mig en anelse tvetydig. Præcis hvad jeg mener er følgende:

Strengen skal se præcis sådan her ud før den godkendes:
pl('content:xxx:loading');
Hvor xxx er et symbol på at det er dynamisk indhold. Altså der hvor jeg skriver xxx kan der stå 6 tegn, 2 tegn, 10 tegn eller hvad det nu måtte være.

Der hvor xxx er, skal der til syvende og sidst fremgå en sti inklusive parametre, fx: "examples/demo1.php?case=1&join=inner" - derfor ser jeg mig nødsaget til at begrænse dette indhold til a-z A-Z 0-9 . ? & da dette ifølge mig er alt hvad en korrekt formatteret sti inklusive parametre må indeholde.

Jeg håber at jeg nu har udtrykt mig på en lettere forstående måde :)
Avatar billede aerobee Nybegynder
21. november 2009 - 17:50 #4
Naturligvis skal tegnet / også accepteres. Ellers får jeg vidst svært ved at skrive en korrekt sti :)
Avatar billede repox Seniormester
21. november 2009 - 17:52 #5
Så er det nok denne du skal bruge:
/^pl\(\'content\:[a-zA-Z0-9\/\?\.\&\=\-\_]+\:loading\'\)\;$/
Avatar billede aerobee Nybegynder
21. november 2009 - 18:12 #6
Ja lige præcis repox. Den virker efter hensigten.
/^pl\(\'content\:[a-zA-Z0-9\/\?\.\&\=\-\_]+\:loading\'\)\;$/

Jeg takker mange gange.

Jeg vælger at uddele points på følgende måde:

reopx = 80, da han kom med den regular expression jeg søgte
christian = 20, da han kom med gode tips

Jeg håber ovenstående kan accepteres ?
I så fald, smid da gerne et svar de herrer :)
Avatar billede repox Seniormester
21. november 2009 - 18:14 #7
Fint med mig.
21. november 2009 - 18:21 #8
Fint med mig.
Avatar billede aerobee Nybegynder
21. november 2009 - 18:40 #9
Jeg siger tak for hjælpen til jer begge :)
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