2017-08-15 4 views
0

ich einen regulären Ausdruck benötigen, die meine Subdomains Filter mit www. beginnen sie ohne die auf die gleiche Sub-Domain zu umleiten www.Regular Expression auf Filter Subdomains beginnend mit www

Also muss ich Urls Filter mit mehr als 3 Punkte in der Domain-Name und beginnt mit www.:

when HTTP_REQUEST { 

    if { [HTTP::uri] matches_regex "**?????????????**" } { 

     //* do Something 

    } else { 

     //* do something else 

    } 

} 

Testfall:

www.subdomain.domain.com sollte subdomain.domain.com umgewandelt werden.

Ich habe keine Erfahrung mit regulären Ausdrücken, also wenn jemand eine Ahnung hat, wäre es hilfreich.

+0

Bitte formatieren Sie Ihren Code richtig. 4 Leerzeichen vor jeder Codezeile mit Einzügen von zusätzlichen 4 Leerzeichen. Die Leute neigen dazu, für falsch formatierten Code downvote. –

Antwort

-1

Sind Sie sicher, dass Sie reguläre Ausdrücke benötigen, um dem zu entsprechen?

einfachste Art und Weise können Sie erreichen, was Sie mit regulären Ausdrücken wollen, ist:

^www\. 

^ ist Anker zu Beginn der Zeichenfolge, \. Punkt entgangen ist, weil Punkt in regulären Ausdrücken bedeutet alles andere als Newline-Zeichen.

Also im Grunde sagt diese Regex, pass mir www, die direkt am Anfang der Zeichenfolge ist, danach kommt Punkt Zeichen.

Sie können Demo hier sehen: https://regex101.com/r/ZnVFaR/1

+0

das scheint bei mir nicht zu funktionieren, da auch eine Nicht-Subdomain betroffen sein wird. –

1

Ich denke, das ist das, was Sie wollen:

^www(\.[^\/\?\n]*){3} 

Getestet here mit wenigen Eingaben.


Erläuterungen

^www bringt die drei w am Anfang.

[^\/\?\n]* passt alles außer einer Markierung des Endes des Domain-Namens (? kann auch den Domain-Namen beenden).

(\.[^\/\?\n]*){3} entspricht einem Punkt, gefolgt von etwas anderem als dem Ende des Domänennamens, dreimal. Dieser Teil stellt sicher, dass Sie eine Subdomain haben (3 Punkte zählen die www.).

+0

Es sieht so aus, als ob das "www \. * \. * \ .. +" für mich jetzt ausgeklügelter ist. Für jetzt ist es ein bisschen Abacadabra für mich. Ich muss testen, ob deine Regex das Richtige für mich tut. –

+0

Dies ist erforderlich, wenn Sie einen Punkt in einem URL-Parameter für eine Subdomain nicht verwechseln möchten. Denken Sie über 'www.notasubdomain.com/test1.2 /' nach. – pchaigno

+0

@EdwinHendriks Gibt es etwas, das Sie mir näher erläutern möchten, oder ein Testfall, in dem die Regex nicht richtig funktioniert? – pchaigno