|
| eregi() problem? Fra : Tonni Aagesen |
Dato : 05-10-02 08:34 |
|
Hejsa NG,
Jeg har brug for at tjekke om et domænenavn er indstastet korrekt. Jeg skal
tjekke om:
1) domænenavnet kun indeholder valide tegn a-z og 0-9 samt "-" og "_".
2) domænenavnet ikke starter eller slutter med "-" eller "_".
3) korrekt tld.
Jeg er indtil videre kommet frem til følgende:
eregi("^[a-z0-9][a-z0-9\-\_]+[a-z0-9]+\.+(dk|com|net|org|info)$",
"php.net");
Men den har ikke den ønskede effekt. Hvad gør jeg galt?
--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>
| |
Jakob Kirkegaard (05-10-2002)
| Kommentar Fra : Jakob Kirkegaard |
Dato : 05-10-02 20:45 |
|
Tonni Aagesen wrote:
> eregi("^[a-z0-9][a-z0-9\-\_]+[a-z0-9]+\.+(dk|com|net|org|info)$",
^
Du ønsker vel kun ét og netop ét punktum mellem tld og selve domænet,
hvorfor det markerede + vel skal væk. Derudover kan jeg ikke se der skulle
være noget galt. Hvordan fejler den ?
--
mvh Jakob Kirkegaard
http://jakir.dk
| |
Tonni Aagesen (06-10-2002)
| Kommentar Fra : Tonni Aagesen |
Dato : 06-10-02 11:04 |
|
"Jakob Kirkegaard" <jkir00@control.auc.dk> skrev i en meddelelse
news:annfgn$li7$1@sunsite.dk...
> > eregi("^[a-z0-9][a-z0-9\-\_]+[a-z0-9]+\.+(dk|com|net|org|info)$",
> ^
> Hvordan fejler den ?
Den vil ikke acceptere hverken bindestreg eller underscore. Dette er fint
nok så længe domænet starter eller slutter med disse, men den vil heller
ikke acceptere "foo-bar.dk".
--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>
| |
Jakob Kirkegaard (06-10-2002)
| Kommentar Fra : Jakob Kirkegaard |
Dato : 06-10-02 11:54 |
|
Tonni Aagesen wrote:
>> > eregi("^[a-z0-9][a-z0-9\-\_]+[a-z0-9]+\.+(dk|com|net|org|info)$",
> Den vil ikke acceptere hverken bindestreg eller underscore. Dette er fint
> nok så længe domænet starter eller slutter med disse, men den vil heller
> ikke acceptere "foo-bar.dk".
Det er vel fordi der ikke umiddelbart findes en character class
[a-z0-9\-\_]. Der findes evt. en smartere metode, men flg. virker dog
([a-z0-9]|-|_).
Man behøver tilsyneladende ikke escape - og _. Husk evt. også en case
insensitive modifier.
--
mvh Jakob Kirkegaard
http://jakir.dk
| |
Tonni Aagesen (06-10-2002)
| Kommentar Fra : Tonni Aagesen |
Dato : 06-10-02 12:11 |
|
"Jakob Kirkegaard" <jkir00@control.auc.dk> skrev i en meddelelse
news:anp4po$5q4$1@sunsite.dk...
> Det er vel fordi der ikke umiddelbart findes en character class
> [a-z0-9\-\_]. Der findes evt. en smartere metode, men flg. virker dog
> ([a-z0-9]|-|_).
>
> Man behøver tilsyneladende ikke escape - og _. Husk evt. også en case
> insensitive modifier.
Det er nødvendigt at escape - hvis den kommer efter en a-z, 0-9 etc. Jeg har
dog fået det til at køre med:
"(^[a-z0-9][a-z0-9_-]+[a-z0-9]){1,61}\.(dk|com|net|org|name|biz|info)$"
Denne fungerer næsten perfekt, bortset fra at en domænenavn på mere end 63
tegn smutter i gennem. Hvis domænenavnet er under 3 tegn, bliver den dog
stadig fanget.
--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>
| |
Peter Brodersen (06-10-2002)
| Kommentar Fra : Peter Brodersen |
Dato : 06-10-02 16:52 |
|
On Sun, 6 Oct 2002 13:11:04 +0200, "Tonni Aagesen"
<use.my@signature.please> wrote:
>"(^[a-z0-9][a-z0-9_-]+[a-z0-9]){1,61}\.(dk|com|net|org|name|biz|info)$"
>Denne fungerer næsten perfekt, bortset fra at en domænenavn på mere end 63
>tegn smutter i gennem. Hvis domænenavnet er under 3 tegn, bliver den dog
>stadig fanget.
Din {1,61}-range matcher mindst tre tegn hver gang. Dvs. der skal være
mindst tre tegn, og op til uendeligt mange (pga. + undervejs)
En mulighed er fx:
"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?\.(dk|com|net|org|name|biz|info|museum|mangeandre)$"
Underscores må ikke være en del af domænenavnet. Ovenstående
accepterer 1-63 tegn, hvor det første og sidste ikke kan inkludere
"-".
Det kunne dog også være relevant at acceptere domænenavne i flere
niveauer. Jeg ser dog bort fra:
- 63-tegns-detaljen
- @dk-adresser og lignende (ret + til *, hvis man også vil acceptere
disse)
- tilfælde, hvor folk opretter hosts med underscore i under deres
domæne
"^([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+(dk|com|net|org|name|biz|info|museum|mangeandre)$"
Mange diskussioner omkring validering af domænenavn (og
e-mail-adresse) kan dog ikke besvares absolut, men falder tilbage på
det præcise behov.
--
- Peter Brodersen
| |
Tonni Aagesen (06-10-2002)
| Kommentar Fra : Tonni Aagesen |
Dato : 06-10-02 17:15 |
|
"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:anpm8k$rjk$1@dknews.tiscali.dk...
> Din {1,61}-range matcher mindst tre tegn hver gang. Dvs. der skal være
> mindst tre tegn, og op til uendeligt mange (pga. + undervejs)
Jeps, der var den, og den virker:
"^[a-z0-9]([a-z0-9-]){1,61}[a-z0-9]\.(dk|com|net|org|name|biz|info)$"
> Mange diskussioner omkring validering af domænenavn (og
> e-mail-adresse) kan dog ikke besvares absolut, men falder tilbage på
> det præcise behov.
Disse behov synes jeg egentlig er rimelig godt definerede i mit første
indlæg.
Nu har jeg hørt forskellige ting om valide domæner. Er underscore tegnet
valid som del af et domæne eg. "foo_bar.tld" ?
--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>
| |
Peter Brodersen (06-10-2002)
| Kommentar Fra : Peter Brodersen |
Dato : 06-10-02 17:24 |
|
On Sun, 6 Oct 2002 18:14:42 +0200, "Tonni Aagesen"
<use.my@signature.please> wrote:
>> Mange diskussioner omkring validering af domænenavn (og
>> e-mail-adresse) kan dog ikke besvares absolut, men falder tilbage på
>> det præcise behov.
>Disse behov synes jeg egentlig er rimelig godt definerede i mit første
>indlæg.
Jeg kan ikke se noget formål nævnt i det oprindelige indlæg. Handler
det at tjekke om der kan sendes en e-mail til en bestemt adresse? Er
det vigtigt om domænet findes i forvejen? Hvad skal det bruges til?
>Nu har jeg hørt forskellige ting om valide domæner. Er underscore tegnet
>valid som del af et domæne eg. "foo_bar.tld" ?
Phew, problemstillingen kompliceres også af formålet, og det er det,
der gør diskussioner om hvad, et hostnavn må indeholde, ret
komplicerede. Mht. webservere kan det både være relevant at finde
laveste fællesnævner i dns-specifikationerne samt
http-specifikationerne. Kigger man på andre protokoller, er der
sikkert andre ting at tage hensyn til.
--
- Peter Brodersen
| |
Tonni Aagesen (06-10-2002)
| Kommentar Fra : Tonni Aagesen |
Dato : 06-10-02 18:34 |
|
"Peter Brodersen" <usenet@ter.dk> skrev i en meddelelse
news:anpo4o$rmd$1@dknews.tiscali.dk...
> Jeg kan ikke se noget formål nævnt i det oprindelige indlæg. Handler
> det at tjekke om der kan sendes en e-mail til en bestemt adresse? Er
> det vigtigt om domænet findes i forvejen? Hvad skal det bruges til?
Jeg har skam ikke beskrevet et formål - men et behov. Jeg gentager lige:
1) domænenavnet kun indeholder valide tegn a-z og 0-9 samt "-" og "_".
2) domænenavnet ikke starter eller slutter med "-" eller "_".
3) korrekt tld.
Men formålet er at jeg leger med en klasse til whois forespørgsler på
bestemte tld's. Betyder det noget for min regex?
> Phew, problemstillingen kompliceres også af formålet, og det er det,
> der gør diskussioner om hvad, et hostnavn må indeholde, ret
> komplicerede. Mht. webservere kan det både være relevant at finde
> laveste fællesnævner i dns-specifikationerne samt
> http-specifikationerne. Kigger man på andre protokoller, er der
> sikkert andre ting at tage hensyn til.
Ja, det kan jeg godt se. Der er tale om domæner til http... Er underscore
valide i dette tilfælde?
--
Mvh
Tonni Aagesen
<agent29 AT stofanet DOT dk>
| |
|
|