2012-04-25 8 views
8

que tienen la siguiente:utilizar variables en comparador de patrón

if (mobile.matches("[0-9]{6,20}")) { 
    ... 
} 

pero le gustaría reemplazar el {6,20} con valores de las variables que les corresponden sido dinámico en algunos casos.

I.e.

int minValue = 11; 
int maxValue = 20 

if (mobile.matches("[0-9]{minValue,maxValue}")) { 
    ... 
} 

¿Cómo puedo incluir variables en el Reg Exp?

Gracias

Respuesta

13

sencilla concatenación de cadenas de uso de Java, utilizando el signo más.

if (mobile.matches("[0-9]{" + minValue + "," + maxValue + "}")) { 

De hecho, como Michael sugirió compilar es mejor para el rendimiento si lo usa mucho.

Pattern pattern = Pattern.compile("[0-9]{" + minValue + "," + maxValue + "}"); 

luego usarlo cuando sea necesario así:

Matcher m = pattern.matcher(mobile); 
if (m.matches()) { 
+0

Puede precompilar la expresión regular matcher si se va a utilizar con frecuencia y los valores no va a cambiar. –

+1

Eso funciona, solo pensé que podría haber alguna otra manera recomendada. Saludos Martijn ... y Andy. –

Cuestiones relacionadas