2012-04-25 9 views
8

mam następujące:Użycie zmiennych w strukturze dopasowującego

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

Ale chciałby zastąpić {6,20} z wartościami zmiennych ze względu na nich był dynamiczny w niektórych przypadkach.

tj.

int minValue = 11; 
int maxValue = 20 

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

Jak mogę uwzględnić zmienne w Reg Exp?

Dzięki

Odpowiedz

13

Skorzystaj z prostej konkatenacji ciągów Java, używając znaku plus.

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

Rzeczywiście, jak Michael zasugerował, kompilacja jest lepsza dla wydajności, jeśli używasz go dużo.

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

następnie użyć go, gdy są potrzebne tak:

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

Można precompile do dopasowywania regex jeśli masz zamiar go używać często i wartości nie ulegnie zmianie. –

+1

To działa, po prostu pomyślałem, że może być jakiś inny zalecany sposób. Pozdrawiam Martijn ... i Andy. –

Powiązane problemy