2012-04-25 13 views
8

Ho il seguente:Utilizzare le variabili nel modello di abbinamento

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

Ma vorrebbero sostituire il {6,20} con valori variabili a causa della loro stato dinamico in alcuni casi.

I.e.

int minValue = 11; 
int maxValue = 20 

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

Come posso includere le variabili in Reg Exp?

Grazie

risposta

13

semplice concatenazione di stringhe Usa Java, utilizzando il segno più.

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

Infatti, come Michael ha suggerito la compilazione è meglio per le prestazioni se si utilizza un sacco.

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

poi usarlo quando necessario in questo modo:

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

È possibile precompilare il matcher regex se avete intenzione di usarlo frequentemente e i valori non cambieranno. –

+1

Funziona, ho solo pensato che ci potrebbe essere qualche altro modo consigliato. Saluti Martijn ... e Andy. –

Problemi correlati