Der einfachste Weg, wahrscheinlich mit einem negativen Look-Ahead ist:
M(?!0{3})\d{3}
[Regex101]
Diese wörtlichen M
einstimmt, überprüft, dass das nächste, was nicht Null verdreifachen wird, entspricht dann drei Ziffern.
Wenn Sie einen bestimmten Satz von Ziffern blockieren möchten, können Sie Ihre Look-Ahead ändern für bestimmte wiederholte Ziffern (0, 2 5, 6 hier) zu überprüfen:
M(?!([0256])\1{2})\d{3}
[Regex101]
Um nach allen dreistelligen Ziffern zu suchen, ersetzen Sie [0256]
durch \d
. Diese Regex führt die Lookahead-Überprüfung für eine Ziffer durch und testet dann, ob sie zweimal mit einer Rückreferenz wiederholt wird.
Eine weniger redundante Art und Weise könnte sein, die Capture-Gruppe außerhalb des Look-Ahead zu setzen:
M(\d)(?!\1{2})\d{2}
[Regex101]
Diese Version sagt eine Stelle zu erfassen, stellen Sie sicher, dass es nicht noch zwei Mal wiederholt , dann erfassen Sie zwei weitere Ziffern.
So etwas wie M ([0-9] {2} [1-9]) – Gunner
@Gunner Aber wenn die ersten beiden Ziffern keine 0s sind, könnte die letzte eine 0 sein, so dass das Muster nicht wäre Arbeit. –
Negativer Lookahead für Triple Zero. –