2010-07-07 12 views
21

Ho due pulsanti sul modulo, uno dei pulsanti contiene il codice valuta (EUR, USD, GBP, CHF, ..) e un altro - direzione commerciale (ACQUISTA o VENDERE). E qualche utilità riconosce i pulsanti dal suo testo. Per riconoscere il pulsante con le valute, utilizzo l'espressione regolare ": [A-Z] {3}", ma non funziona correttamente quando il secondo pulsante contiene il testo "ACQUISTA" (la descrizione regex restituisce più di un oggetto).RegExp per abbinare tre lettere, ma non testo "ACQUISTA"

Domanda: come posso scrivere il modello per Espressione regolare, che significa: corrisponde solo quando il testo contiene tre lettere in alto, ma non il testo "ACQUISTA"?

Grazie!

+0

Si può anche provare ad abbinare solo il contenuto del primo pulsante solo. In questo modo non ti interessa se viene aggiunto un terzo pulsante 'YAY' o' NAY'. – polygenelubricants

risposta

35
^(?!BUY)[A-Z]{3}$ 

(?!BUY) è negative lookahead che verrebbe a mancare se corrisponde alla regex BUY

+0

Sì, funziona :) Grazie per la risposta rapida! – vmg

5

È possibile utilizzare un negativo look-dietro l'affermazione per verificare che il testo appena abbinato non è uguale BUY.

[A-Z]{3}(?<!BUY) 
+2

la versione look ahead è più ampiamente supportata in diverse implementazioni regex e ha prestazioni migliori (credo). – Jens

+0

questo ha funzionato per me in una (simulazione) di regex java8, mentre la risposta accettata non – ycomp

Problemi correlati