2012-04-25 27 views
8

tôi có như sau:Sử dụng các biến trong mô hình khớp

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

Nhưng muốn thay thế {6,20} với giá trị biến do họ bị động trong một số trường hợp.

I.e.

int minValue = 11; 
int maxValue = 20 

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

Làm cách nào để bao gồm các biến trong Reg Exp?

Cảm ơn

Trả lời

13

Sử dụng nối chuỗi đơn giản của Java, sử dụng ký hiệu dấu cộng.

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

Thật vậy, vì Michael đề xuất biên dịch tốt hơn cho hiệu suất nếu bạn sử dụng rất nhiều.

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

Sau đó, sử dụng nó khi cần thiết như thế này:

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

Bạn có thể tiền biên dịch khớp regex nếu bạn đang đi để sử dụng nó thường xuyên và các giá trị này sẽ không thay đổi. –

+1

Đó là công trình, tôi chỉ nghĩ rằng có thể có một số cách khác được đề nghị. Chúc mừng Martijn ... và Andy. –

Các vấn đề liên quan