Avatar billede hiks Nybegynder
12. september 2007 - 09:51 Der er 8 kommentarer og
1 løsning

Validering af RFC2141

Hej

Nogen der kan lave en reg.exp på:

http://www.ietf.org/rfc/rfc2141.txt

som overholder både regler for NID og NSS ?

På forhånd tak.

/hiks
Avatar billede barklund Nybegynder
12. september 2007 - 10:44 #1
En googling på "rfc 2141 complaint regular expression" giver blandt andet:

www.perl.com/cgi-bin/cpan_mod%3Fmodule%3DURI+rfc+2141+complaint+regular+expression" target="_blank">http://209.85.135.104/search?q=cache:UcTcLTPdHbQJ:www.perl.com/cgi-bin/cpan_mod%3Fmodule%3DURI+rfc+2141+complaint+regular+expression

Herfra kan man hapse:

my($scheme, $authority, $path, $query, $fragment) = $uri =~ m|(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?|;

Hvilket ser meget fornuftigt ud :)

--
Morten Barklund
Avatar billede barklund Nybegynder
12. september 2007 - 10:45 #2
(hvis man staver rigtig til "compliant" får man nu ikke meget bedre hits)
Avatar billede hiks Nybegynder
12. september 2007 - 10:52 #3
tak for googlingen :)

jeg ser dog ingen begrænsninger på NID'en på 1-31 chars.

og langt vigtigere: Vil denne virke på tværs af java og .net? der er lidt forskel i metoderne ik?

/hiks
Avatar billede barklund Nybegynder
12. september 2007 - 11:26 #4
Well, jeg har ikke sat mig ind i hele RFC'en så nej, det indeholder den muligvis ikke, men det er vel at ganske udmærket udgangspunkt for selv at tilføje de sidste par ting :)

Ovenstående er skrevet i Perl, og netop Perl's meget kraftfulde regulære udtryk har dannet grundlag for regex-implementationen i Java, .NET og mange andre sprog. Så ja, det er kompatibelt - og det mest eksotiske i ovenstående er da også "(?:" som er non-capturing group, da sagtens kan undværes, hvis den enkelt implementation ikke lige understøtter det.

Selve måden man bruger et regex er meget forskellig, men syntaksen for udtrykket er uændret.
Avatar billede hiks Nybegynder
12. september 2007 - 11:41 #5
men jeg er sgu ikke så skarp på reg.exp. Men noget i stil med?

[Uu][Rr][Nn]:([a-z,A-Z,0-9]{1,31}):(m|(?:([^:/?#]+):)?(?://([^/?#]*))?([^?#]*)(?:\?([^#]*))?(?:#(.*))?|;)

/hiks
Avatar billede hiks Nybegynder
12. september 2007 - 11:45 #6
"(?:" ville jeg bare kunne udelade dette af reg.exp'en?

xml-spy godtager den nemlig ikke.

/hiks
Avatar billede barklund Nybegynder
12. september 2007 - 11:58 #7
I "(?:" kan du udelade "?:" - så får du bare en ekstra gruppe i dit resultat, som du kan ignorere.

I forhold til det indledende skema, du har tilføjet, så kan du sandsynligvis smide en "case insenstive" ting på, så du bare kan skrive urn:// :)
Avatar billede hiks Nybegynder
28. oktober 2007 - 17:54 #8
ok - tak for hjælpen. Jeg kom nogenlunde i land med ovenstående.

lægger du et svar?

/hiks
Avatar billede hiks Nybegynder
09. april 2008 - 19:24 #9
lukker

/hiks
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