Regex-matching, wenn maximal zwei vorkommen von Punkt und Strich
Ich brauche einen regulären Ausdruck entsprechen, wird jeder string mit höchstens 2 Striche und 2 Punkte.
Es muss nicht sein, ein Strich, noch ein Punkt, aber wenn es 3+ Bindestriche oder 3 Punkte oder sogar beide 3+ Striche und 3+ Punkten, dann die regex muss nicht mit der string.
Vorgesehen für den Gebrauch in PHP.
Ich weiß einfach, alternativen mit PHP-Funktionen, aber es ist in ein großes system, das einfach nur erlaubt die Filterung mittels regulärer Ausdrücke.
Beispiel Zeichenfolge, die ABGESTIMMT werden:
hello-world.com
Beispiel-Zeichenfolge, die NICHT erreicht werden:
www.hello-world.easy.com oder hello-world-i-win.com
- Können Sie erklären, warum Sie benötigen, um eine solche Anforderung? Versuchen Sie zu überprüfen urls?
- Ich sehe nicht, wie eine URL mit mehr als zwei Punkten, wäre unwirksam 🙂 Allerdings ist es für das filtern von url ' s, die sind zu Komplex und scheinen automatisch generierte.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist dieser gefunden, die Ihren Erwartungen?
Sehen es hier auf Regexr
(?!^.*?([.-]).*\1.*\1.*$)
ist eine negative lookahead-Funktion. Es entspricht der ersten.-
legen Sie es in der capture-Gruppe 1, und dann prüft, ob es gibt zwei weitere von Ihnen mit hte Rückverweis\1
. Sobald es gefunden drei, die dem Ausdruck nicht entsprechen, nicht mehr.^.*$
passt alles von Anfang bis Ende, wenn der negative lookahead-hat nicht abgestimmt.Getestet regex wird den trick tun:
Verwenden:
(?!^.*?([-.])(?:.*\1){2}.*$)^.*$