Avatar billede johny Nybegynder
24. april 2008 - 16:49 Der 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?

Med venlig hilsen
Johny Iversen
Avatar billede nielle Nybegynder
24. april 2008 - 19:05 #1
Ikke \( - for det matcher en startparentes, og dem er der sikkert ikke o ret mange navne.

() gruppere. Altså uden \.
Avatar billede nielle Nybegynder
24. april 2008 - 19:06 #2
([A-ZÆØÅ])([a-zæøå])+(\s\1\2+)+
Avatar billede nielle Nybegynder
24. april 2008 - 19:14 #4
Men hvis du skal matche:

"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´:

André Van Cour
Avatar billede johny Nybegynder
24. april 2008 - 19:57 #5
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
Avatar billede nielle Nybegynder
24. april 2008 - 23:08 #6
\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.

Har du prøvet denne ehr?


([A-ZÆØÅ][a-zæøå]+ [A-ZÆØÅ][a-zæøå]+)

??
Avatar billede johny Nybegynder
25. april 2008 - 08:21 #7
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?
Avatar billede johny Nybegynder
25. april 2008 - 08:30 #8
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.
Avatar billede nielle Nybegynder
25. april 2008 - 18:05 #9
Så hellere:

"^[A-ZÆØÅ][a-zæøå]+( [A-ZÆØÅ][a-zæøå]+)+$"

for \s matcher andet end kun mellemrum.
Avatar billede johny Nybegynder
26. april 2008 - 00:10 #10
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.

Tak for hjælpen endnu en gang.. :)
Avatar billede nielle Nybegynder
26. april 2008 - 07:25 #11
\s er skam white-space - men white-space er et af tegnene mellemrum, tabulator (\t), carriage-return (\r) eller new-line (\n).
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
Kurser inden for grundlæggende programmering

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