2017-08-15 1 views
0

J'ai besoin d'une expression régulière qui filtre mes sous-domaines commençant par www. de les rediriger vers la même sous-domaine sans www.Expression régulière à des sous-domaines de filtre en commençant par www

donc j'ai besoin de filtrer les urls avec plus de 3 points dans la nom de domaine et commencer par www.:

when HTTP_REQUEST { 

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

     //* do Something 

    } else { 

     //* do something else 

    } 

} 

cas de test:

www.subdomain.domain.com doivent être converties en subdomain.domain.com.

Je n'ai aucune expérience avec les expressions régulières, donc si quelqu'un a une idée, ce serait utile.

+0

Veuillez formater votre code correctement. 4 espaces avant chaque ligne de code avec des retraits de 4 espaces supplémentaires. Les gens auront tendance à downvote pour le code mal formaté. –

Répondre

-1

Êtes-vous sûr de vouloir utiliser des expressions régulières pour faire correspondre cela?

manière la plus simple que vous pouvez accomplir ce que vous voulez avec des expressions régulières est:

^www\. 

^ est l'ancre au début de la chaîne, \. réchappés point, parce que point dans les expressions régulières signifie quelque chose, mais le caractère de nouvelle ligne.

Donc, fondamentalement, cette regex vous dit, faites correspondre www qui est juste au début de la chaîne, après il y a un caractère point.

Vous pouvez voir la démo ici: https://regex101.com/r/ZnVFaR/1

+0

cela ne semble pas fonctionner pour moi, car un non-sous-domaine sera également affecté. –

1

Je pense que c'est ce que vous voulez:

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

Testé here avec quelques entrées.


Explications

^www correspond à trois w au début. Correspond à n'importe quoi d'autre qu'un marqueur de la fin du nom de domaine (? peut également mettre fin au nom de domaine)

[^\/\?\n]*

(\.[^\/\?\n]*){3} correspond à un point suivi par autre chose que la fin du nom de domaine, trois fois. Cette partie vous assurera d'avoir un sous-domaine (3 points comptant le www.).

+0

Il semble que ce soit plus sophistiqué que le "www \. * \. * \ .. +" que j'utilise pour le moment. Pour l'instant c'est un peu abacadabra pour moi. Je dois tester si votre regex fait la bonne chose pour moi. –

+0

Ceci est requis si vous ne voulez pas confondre un point dans un paramètre d'URL pour un sous-domaine. Pensez à 'www.notasubdomain.com/test1.2 /'. – pchaigno

+0

@EdwinHendriks Y a-t-il quelque chose que vous aimeriez que je détaille, ou un test que la regex ne gère pas correctement? – pchaigno