2017-06-26 7 views
0

Ich versuche, eine Rewrite-Regel zu entsprechen, wenn ein gültiger Start Teil einer Domäne ist, wie zum Beispiel:Passende Teile eines regex

/asd- 
/asd-f 
/asd-f4. 
/asd-f4.n 
/asd-f4.n 
/asd-f4.net 

Ich möchte nicht, dass es in diesen ungültigen Start übereinstimmen Domains:

/- 
/-as 
/as-- 
/asdf.4 

ich weiß, es ist nicht komplett inklusive, aber ich definieren eine gültige Domain als:

  • beginnt und endet mit einem Buchstaben oder einer Zahl (ausg Der
  • Be 1 Zeichen oder länger und weniger als 63 Zeichen (ohne den Punkt und den Teil)
  • Enthält nur Buchstaben, Zahlen oder Bindestriche (außer dem Punkt und dem Tld Teil)
  • enthält keine zwei oder mehr Bindestriche in einer Reihe
  • Beendet .com, .net oder .org

Gerade jetzt meine regex Spiele gültig Domains, aber ich bin nicht wirklich bekommen wenn es nur mit einem gültigen Domain-Namen beginnt.

RewriteRule ^/(((?!-)(?!.*--)[A-Za-z0-9-](?<!-)){1,63}(\.(com|net|org)))$ /?domain=$1 [NC] 
+0

prüfen https://regex101.com/r/vq4vmF/2 –

+0

'RewriteRule' passt nur' REQUEST_URI' nicht den Domain-Namen. – anubhava

+0

Dies wäre viel einfacher, wenn es in eine Abfolge von Bedingungen unterteilt wäre. – covener

Antwort

0

Ich bin mir nicht sicher, ob das ist, was Sie brauchen, aber es wird trotzdem versuchen.
Beachten Sie, dass der letzte Teil \.(com|net|org) erforderlich ist, wie ich denke, Sie sagen.

Wenn der letzten Teil nicht erforderlich ist, dann haben Sie
eine andere wie (\.(com|net|org)|(?!\S)) oder ähnliches zu verwenden, zu verankern.

/([a-zA-Z0-9]|(?<!/)-(?!-)){1,63}\.(com|net|org)

Expanded
/ 
(
     [a-zA-Z0-9] 
    | (?<! /) 
     - 
     (?! -) 
){1,63} 
\. 
(com | net | org) 

Alternativ Sie eine Progression mithalten können, aber es muss noch einige
am Ende Verankerung (kann alles sein).

/([a-zA-Z0-9]|(?<!/)-(?!-)){1,63}(\.(c(om?)?|n(et?)?|o(rg?)?)?)?(?!\S)

https://regex101.com/r/4bmeCT/1

Expanded
/
(
     [a-zA-Z0-9] 
    | (?<! /) 
     - 
     (?! -) 
){1,63} 
(
     \. 
     (
      c 
      (om?)? 
     | n 
      (et?)? 
     | o 
      (rg?)? 
    )? 
)? 
(?! \S) # some anchoring required here