Negazione di stringhe utilizzando espressioni regolari
-
18-09-2019 - |
Domanda
È possibile eseguire la negazione delle stringhe nelle espressioni regolari?Devo abbinare tutte le stringhe che non contengono la stringa ".."
.So che puoi usare ^[^\.]*$
per abbinare tutte le stringhe che non contengono "."
ma devo abbinare più di un carattere.So che potrei semplicemente abbinare una stringa contenente ".."
e quindi negare il valore restituito della corrispondenza per ottenere lo stesso risultato ma mi chiedevo solo se fosse possibile.
Soluzione
È possibile utilizzare lookaheads negativi:
^(?!.*\.\.).*$
Questo fa sì che l'espressione di non corrispondere se si può trovare una sequenza di due periodi in qualsiasi punto della stringa.
Altri suggerimenti
^(?:(?!\.\.).)*$
corrisponderà solo se non ci sono due punti consecutivi in nessun punto della stringa.