| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett
Enkel een regexp voor het matchen van IPv6 adressen is al behoorlijk huge:
code:
En dit limiteert nog niet eens het aantal 16-bit stukken tot max 8 (of minder bij het gebruik van compressie-indicatie of de IPv6/IPv4 mix-vorm).
tbh is het nut ook maar zeer gering, wanneer post je nu al ueberhaupt een link met een IPv4-adres in plaats van gewoon een hostname?
Het enige is dat [url="http://[2002:52d9:f073::52d9:f073]"]link[/url] (let op: link zal wel altijd tussen quotes moeten!) ook niet werkt; dat zou imo wel aangepast kunnen worden zodat er toch altijd een manier is om een link met een IPv6 adres te posten
code:
1
| ([a-f0-9]{1,4}(:[a-f0-9]{1,4})*|[a-f0-9]{1,4}(:[a-f0-9]{1,4})*::([a-f0-9]{1,4}(:[a-f0-9]{1,4})*)?|::([a-f0-9]{1,4}(:[a-f0-9]{1,4})*)?)(:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})? |
En dit limiteert nog niet eens het aantal 16-bit stukken tot max 8 (of minder bij het gebruik van compressie-indicatie of de IPv6/IPv4 mix-vorm).
tbh is het nut ook maar zeer gering, wanneer post je nu al ueberhaupt een link met een IPv4-adres in plaats van gewoon een hostname?
Het enige is dat [url="http://[2002:52d9:f073::52d9:f073]"]link[/url] (let op: link zal wel altijd tussen quotes moeten!) ook niet werkt; dat zou imo wel aangepast kunnen worden zodat er toch altijd een manier is om een link met een IPv6 adres te posten
crisp wijzigde dit bericht 04-06-2009 00:15 (18%)
Ik zie het. Er moet volgens die ABNF minstens één hexadecimaal cijfer komen na een dubbele punt, terwijl dat voor IPv4 adressen niet hoeft. Lekker. 
Misschien heb je hier wat aan: http://rfc-ref.org/RFC-TEXTS/3986/index.html. Kun je ook zien of ze obsolete zijn (zoals het geval was met die brakke RFC).
Dit is wat je dus nodig hebt:
code:
En hij is niet makkelijker, maar wel preciezer. Die eerdere RFC specificeerde helemaal niet dat er maximaal 8 van die 'hexdig'- blokken mochten zijn.
Misschien heb je hier wat aan: http://rfc-ref.org/RFC-TEXTS/3986/index.html. Kun je ook zien of ze obsolete zijn (zoals het geval was met die brakke RFC).
Dit is wat je dus nodig hebt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| IP-literal = "[" ( IPv6address / IPvFuture ) "]"
IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" )
IPv6address = 6( h16 ":" ) ls32
/ "::" 5( h16 ":" ) ls32
/ [ h16 ] "::" 4( h16 ":" ) ls32
/ [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32
/ [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32
/ [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32
/ [ *4( h16 ":" ) h16 ] "::" ls32
/ [ *5( h16 ":" ) h16 ] "::" h16
/ [ *6( h16 ":" ) h16 ] "::"
h16 = 1*4HEXDIG
ls32 = ( h16 ":" h16 ) / IPv4address
IPv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet
dec-octet = DIGIT ; 0-9
/ %x31-39 DIGIT ; 10-99
/ "1" 2DIGIT ; 100-199
/ "2" %x30-34 DIGIT ; 200-249
/ "25" %x30-35 ; 250-255 |
En hij is niet makkelijker, maar wel preciezer. Die eerdere RFC specificeerde helemaal niet dat er maximaal 8 van die 'hexdig'- blokken mochten zijn.
Jaap-Jan wijzigde dit bericht 04-06-2009 13:29 (67%)
| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett
Ook dat klopt en was me al opgevallen. Zoals je kon zien was ik al naar rfc3986 aan het kijken en ben ik al langzaam aan begonnen om een aantal van onze url-check functies uit te breiden met IPv6 support. Ik doe dat in eerste instantie met een simpele pre-selectie:quote:Jaap-Jan schreef op donderdag 04 juni 2009 @ 13:20:
[...]
En hij is niet makkelijker, maar wel preciezer. Die eerdere RFC specificeerde helemaal niet dat er maximaal 8 van die 'hexdig'- blokken mochten zijn.
code:
1
| \[[0-9a-f.:]+\] |
waarna ik dat na een eventuele match verder check op validity; op die manier houdt ik het nog enigszins overzichtelijk en performant - rfc3986 wil je niet meer in 1 regexp stoppen (waar dat met rfc2396 nog prima kon)
Nice, dat heeft nog heel wat voeten in de aarde gehad. 
| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett
Pagina: 1