2015-06-19 28 views
7

Tôi cần cụm từ thông dụng để kiểm tra giá trị của chuỗi là '0' hoặc số dương có độ dài bằng 1 đến 10 (cũng là số đầu tiên không được bằng 0).Biểu thức chính quy cho 0 hoặc số dương

Tôi bị kẹt, tôi có thể lấy số 0, nhưng tôi không thể nhận được số dương.

Dưới đây là những gì tôi có:

(^([0])$)|(^([1-9][0-9]{0-9})$) 

exp reg này trông một chút điên, tôi đã cố gắng rất nhiều thứ khác nhau và làm nhiều hơn điên và điên.

+2

Sẽ không đúc đến một int được nhanh hơn và dễ dàng hơn? –

+1

tại sao không cố gắng phân tích cú pháp nó và bỏ qua regex? – Jonesopolis

+0

Bạn có đang xác thực hoặc trích xuất văn bản không? – willaien

Trả lời

7

Đối với một loạt các khả năng, bạn sử dụng dấu phẩy, không phải dấu gạch nối.

(^([0])$)|(^([1-9][0-9]{0,9})$) 

Tuy nhiên, regex của bạn có thể được rút ngắn xuống còn:

^(0|[1-9][0-9]{0,9})$ 
2

đưa ra, không Regex cách tiếp cận nhanh hơn:

static void Main(string[] args 
{ 
    string str = "12"; 

    long test; 
    if(str.Length <= 10 
     && long.TryParse(str, out test) 
     && test >= 0) 
    { 
     //valid 
    } 
} 
+0

Điều này không chấp nhận 0: P –

+0

điểm tốt, được cập nhật – Jonesopolis

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