2016-09-20 4 views
0

Ich brauche Regex zu allen Wörtern beginnend mit zu erstellen. aber auch weiße flagge wörter wie .well-known .. oder einige ähnliche ..regix match Wörter beginnend mit Punkt, aber ausschließen einige

Für jetzt habe ich das eine bauen, das gegensätzlich ist, dieses fängt NUR dieses ein. Ich habe versucht, einige regex Symbol für Invert zu finden, aber das ist nicht vorhanden Ich denke ..

location ~ /^(\.well-known) { 
    deny all; 
} 

thx

Antwort

1

Hier ein Ausdruck ist, das funktioniert:

^(\.(?!well-known|other-forbidden-words|another-forbidden-word).+)$ 

Ändern Sie einfach die anderen Wörter in white-lis Wörter, die Sie wollen, und fügen Sie mehr hinzu, wenn es sein muss.

+0

thanx Mann ,, jetzt ist es großartig :) https://regex101.com/r/mS2wC6/3 dieses Regex-Zeug rockt –

+0

Es tut tatsächlich. Regex ist sehr mächtig, aber ein Schmerz in dem blutigen Arsch. – ThePerplexedOne

0

hm ,,

Ich denke, dass ich auf meine Antwort dank gefunden:

Invert match with regexp

dies ist der Test, der jetzt funktioniert:

https://regex101.com/r/mS2wC6/2

und Lösung ist dies:

^(\.(?!well-known)) 

so ok, ich glaube, ich habe jetzt diese Gruppierung Sache ..

hth, k

+0

Ihr Ausdruck stimmt nicht mit dem ganzen Wort überein, wenn ein Name gefunden wird, der mit '.' beginnt und nicht in der weißen Liste steht. – ThePerplexedOne

+0

Das '^ (\. (? Gut bekannt))' ist dasselbe wie '^ \. (? Gut bekannt)' - es sei denn, Sie verwenden Gruppe 1. –

0

Nun, Sie müssen keine Wörter in OR hinzufügen "|" Zustand können Sie einfach tun

$pattern = "/\.+(?:[a-zA-Z]|-)/"; 

die alles übernimmt, die mit beginnt. und enthält - oder Alphabete.

Verwandte Themen