2011-01-13 55 views

Trả lời

69

Sử dụng biểu thức chính quy này để phù hợp với mười chữ số chỉ:

@"^\d{10}$" 

Để tìm một chuỗi số mười liên tiếp chữ số bất cứ nơi nào trong một chuỗi, sử dụng:

@"\d{10}" 

Lưu ý rằng điều này sẽ cũng tìm ra 10 chữ số đầu tiên của một số có 11 chữ số. Để tìm kiếm bất cứ nơi nào trong chuỗi cho chính xác 10 chữ số liên tiếp và không nhiều hơn bạn có thể sử dụng tiêu cực lookarounds:

@"(?<!\d)\d{10}(?!\d)" 
+0

Xin lỗi vì sự uể oải, nhưng "sự phản đối tiêu cực" là gì? – sova

+1

@sova: Bạn có thể đọc về các xác nhận xem xét tại đây: http://www.regular-expressions.info/lookaround.html. Biểu thức có nghĩa là 10 chữ số không có chữ số trước đó - '(?

+0

Tuyệt vời, cảm ơn .. chính xác wat Tôi đang tìm kiếm –

3

Sử dụng này:

\d{10} 

Tôi hy vọng nó giúp.

6

Sử dụng mẫu sau.

^\d{10}$ 
3
\d{10} 

Tôi tin rằng nên làm điều đó

3

Một ví dụ về làm thế nào để thực hiện nó:

public bool ValidateSocialSecNumber(string socialSecNumber) 
{ 
    //Accepts only 10 digits, no more no less. (Like Mike's answer) 
    Regex pattern = new Regex(@"(?<!\d)\d{10}(?!\d)"); 

    if(pattern.isMatch(socialSecNumber)) 
    { 
     //Do something 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

Bạn có thể cũng đã thực hiện nó theo cách khác bằng cách ví dụ sử dụng Match và sau đó gói một khối try-catch quanh khớp mẫu. Tuy nhiên, nếu một đầu vào sai được đưa ra khá thường xuyên, nó khá đắt tiền để ném một ngoại lệ. Vì vậy, tôi thích cách trên, trong trường hợp đơn giản ít nhất.

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