2012-03-09 32 views
18

Tôi đang cố gắng phát triển cụm từ thông dụng để xác thực chuỗi đến với tôi như: "TE33" hoặc "FR56" hoặc bất kỳ chuỗi nào tôn trọng 2 chữ cái và 2 số.Cụm từ thông dụng - 2 chữ cái và 2 số trong C#

2 ký tự đầu tiên phải là chữ cái và 2 ký tự cuối cùng phải là số.

Tôi đã thử nhiều kết hợp và tôi đã không thành công. Lần cuối cùng tôi đã thử:

if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}")){ 
} 
+0

Tôi luôn sắp xếp chúng trên trang web kiểm tra regex sau đó đi vào vs.net với một cái gì đó mà tôi biết công trình từ thử nghiệm tương tác. –

+5

Một trang web thử nghiệm tốt sẽ giúp bạn với những điều này, chẳng hạn như http://regexhero.net/tester/ –

+0

Hoạt động tốt cho tôi. Chính xác những gì dây đến của bạn trông như thế nào? Bạn đang cố gắng để phù hợp với một phần của một chuỗi hoặc là những 4 ký tự toàn bộ chuỗi? –

Trả lời

31

Bạn đang thiếu neo kết thúc.

if(Regex.IsMatch(myString, "^[A-Za-z]{2}[0-9]{2}\z")) { 
    // ... 
}

Here's a demo.


EDIT: Nếu bạn có thể có bất cứ điều gì giữa một ban đầu 2 chữ cái và một trận chung kết 2 con số:

if(Regex.IsMatch(myString, @"^[A-Za-z]{2}.*\d{2}\z")) { 
    // ... 
}

Here's a demo.

+0

Điều này không quan trọng trừ khi bạn thực sự cần từ chối bất kỳ chuỗi nào dài hơn mong đợi. –

+0

Điều này cũng phù hợp với ra neo ở cuối, cái gì khác có thể là vấn đề. http://ideone.com/wZk6B –

+0

Tác phẩm này thậm chí không có $ – ebutusov

4

Điều này sẽ giúp bạn bắt đầu bằng hai chữ cái và kết thúc bằng hai chữ số.

[A-Za-z]{2}(.*)[0-9]{2} 

Nếu bạn biết nó sẽ luôn luôn chỉ hai và hai bạn có thể

[A-Za-z]{2}[0-9]{2} 
4

Chỉ cần cho vui, đây là một tổ chức phi regex (dễ đọc hơn/duy trì cho simpletons như tôi) giải pháp:

string myString = "AB12"; 

if(Char.IsLetter(myString, 0) && 
    Char.IsLetter(myString, 1) && 
    Char.IsNumber(myString, 2) && 
    Char.IsNumber(myString, 3)) { 
    // First two are letters, second two are numbers 
} 
else { 
    // Validation failed 
} 

EDIT

dường như tôi đã hiểu lầm các yêu cầu. Mã bên dưới sẽ đảm bảo rằng hai ký tự đầu tiên và hai ký tự cuối cùng của một chuỗi xác thực (miễn là độ dài của chuỗi là> 3)

string myString = "AB12"; 

if(myString.Length > 3) {  
    if(Char.IsLetter(myString, 0) && 
     Char.IsLetter(myString, 1) && 
     Char.IsNumber(myString, (myString.Length - 2)) && 
     Char.IsNumber(myString, (myString.Length - 1))) { 
     // First two are letters, second two are numbers 
     } 
     else { 
     // Validation failed 
    } 
} 
else { 
    // Validation failed 
} 
+0

Lưu ý rằng IsLetter là ** nhiều ** rộng hơn A-Z. Bạn cũng có thể sử dụng cùng một loại kiểm tra các chữ số. –

+0

@AlexeiLevenkov, 'A-Z' lưu ý. Tôi chưa bao giờ sử dụng 'Char.IsNumber' trước đây. Cảm ơn những người đứng đầu lên (mã cập nhật)! –

+0

-1, giải pháp không kiểm tra những gì sau. – Qtax

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