24. april 2008 - 16:49Der er
10 kommentarer og 1 løsning
Fuldt navn - hvad gør jeg galt?
Jeg er først lige begyndt at bruge Reg.Exp., og det via 2 guider på nettet, så det er meget muligt der er noget af det jeg har læst mig til der er forkert.
Men så vidt jeg kunne forstå, så er '\(\)' til at gruppere et del-udtryk, og give det et nummer som kan tilgås senere. Det er dette jeg forsøger at udnytte i mit Reg.Exp., og et eller andet er der i hvert fald gået galt, for det virker ikke efter hensigten:
\([A-ZÆØÅ]\)\([a-zæøå]\)+(\s\0\1+)+
Det jeg gerne vil at det skal kunne er, at definere et fuldt navn som værende et navn med minimum to navne, som er bestående af 1 stort bogstav efterfulgt af 1-mange små bogstaver, og at navnene er adskilte af 1 og kun 1 mellemrum.
Er der nogen der kan fortælle mig hvad jeg gør galt?
"fuldt navn som værende et navn med minimum to navne, som er bestående af 1 stort bogstav efterfulgt af 1-mange små bogstaver, og at navnene er adskilte af 1 og kun 1 mellemrum"
- så er det:
[A-ZÆØÅ][a-zæøå]+ [A-ZÆØÅ][a-zæøå]+
- og hvis du skal huske det i en gruppe:
([A-ZÆØÅ][a-zæøå]+ [A-ZÆØÅ][a-zæøå]+)
Men hvad så med dem som her et mellemnavn, eller bruger et bogstav med accent´:
Ahh, kan se det med at fjerne \ hjalp på en del. Den eneste side jeg lige fandt med grouping havde nemlig de '\' foran paranteserne.
En anden ting er nummereringen. Starter den virkelig ved 1? Det vil jo fjerne et ekstra slot at huske i.
Men den udgave du gav mig, passede ikke til mit krav (som det er lige nu) desværre, fordi det skulle være "minimum to navne".
Den rettede udgave af min som du skrev, virkede desværre heller ikke efter hensigten. Der kunne jeg kun skrive 2 navne bestående af præcis 2 bogstaver.
Jeg forsøgte at sætte plus efter en gruppe for at siget "1 eller flere af denne gruppe", men det virker heller ikke (eller også er min syntax stadig forkert)?
Jeg kan da godt se det med accent i hvert fald, det tænkte jeg ikke over til at starte med, så det må jeg nok også hellere få indbygget i den.
Men tak for de fine artikler, dem må jeg hellere få læst igennem. :D
\1 betyder at det der står på den plads skal være lig med det som blev matchet af det første ()-par. Jeg synes ikke at det lyder spor korrekt i forhold til det du vil have.
Ahh, ja så kan jeg da godt se det er forkert. Jeg troede det var koden jeg kopierede.. :)
Det eksempel du kommer med der virker fint til navne med kun 2 navne ja, men jeg ville gerne at det skulle være et minimum af to navne (2 eller flere), så der netop var plads til mellemnavne.. :) Er der ikke en måde man kan bruge +'et på til at fortælle at det er en hel gruppe der skal gentages af flere omgange?
Hmm, jeg synes ellers jeg testede før at skrive f.eks. "Te Te Te", men det kunne jeg heller ikke få den til at validere, men nu virker det efter at have udskiftet /1 og /2? Den foreløbigt endelig udgave ser således ud:
@"^[A-ZÆØÅ][a-zæøå]+(\s[A-ZÆØÅ][a-zæøå]+)+$"
Så det jeg gjorde forkert var altså brugen af gruppering, som jeg troede gav mig mulighed for at genbruge kode / være doven programmør, og så skulle jeg også have fjernet de der backslashes. :)
Mange tak for hjælpen, nu har jeg da helt sikkert en bedre forståelse af hvad det er. :) Smid et svar for points.
Ah, jeg forstod det som om at \s bare var white spaces. Jeg tilføjede også é til udtrykket, så må jeg have det udvidet, hvis jeg støder på flere ting den ikke dækker ind, men det må blive på forsøgsbasis.
\s er skam white-space - men white-space er et af tegnene mellemrum, tabulator (\t), carriage-return (\r) eller new-line (\n).
Synes godt om
Ny brugerNybegynder
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.