2010-07-07 8 views
21

Tengo dos botones en el formulario, uno de los botones contiene el código de moneda (EUR, USD, GBP, CHF, ..) y otro - dirección comercial (COMPRAR o VENDER). Y algunas utilidades reconocen botones por su texto. Para reconocer el botón con monedas, uso la expresión regular ": [A-Z] {3}", pero no funciona correctamente cuando el segundo botón contiene el texto "COMPRAR" (la descripción de la expresión devuelve más de un objeto).RegExp para que coincidan tres letras, pero no el texto "COMPRAR"

Pregunta: ¿cómo puedo escribir el patrón para la expresión regular, lo que significa: coinciden solo cuando el texto contiene tres letras superiores, pero no el texto "COMPRAR"?

Gracias!

+0

También puede intentar hacer coincidir el contenido del primer botón solamente. De esa forma no te importa si se agrega un tercer botón 'YAY' o' NAY'. – polygenelubricants

Respuesta

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

(?!BUY)negative lookahead es que fallaría si coincide con la expresión regular BUY

+0

Sí, funciona :) ¡Gracias por la respuesta rápida! – vmg

5

Puede utilizar un vistazo detrás negativo para verificar la afirmación de que el texto que acaba emparejado no es igual a COMPRAR.

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

la versión anticipada es más ampliamente compatible con diferentes implementaciones de expresiones regulares, y tiene un mejor rendimiento (creo). – Jens

+0

esto funcionó para mí en una (simulación) de java8 regex, mientras que la respuesta aceptada no – ycomp

Cuestiones relacionadas