2008-12-02 37 views
16

Tôi cần một regex cho mô hình sau:regex nhân vật phù hợp với alpha tiếp theo 4 chữ cái và số

  • Tổng số 5 ký tự (chữ và số, không có gì khác).

  • ký tự đầu tiên phải là một chữ cái (A, B, hoặc chỉ C)

  • 4 nhân vật còn lại có thể được số hoặc chữ cái.

Clarifcation: chữ cái đầu tiên chỉ có thể là A, B, hoặc C.

Ví dụ:

  • A1234 là hợp lệ
  • D1234 không hợp lệ
+0

Tại sao điều này lại bị bỏ phiếu? –

+0

Không phải tôi, nhưng tôi tưởng tượng đó là danh hiệu nghèo nàn. – Whytespot

+1

@ Timothy - không phải là tôi đồng ý với nó, nhưng dường như có những người bình chọn những câu hỏi "đơn giản". Cá nhân tôi sẽ không, bởi vì tất cả mọi người là một newbie tại một số điểm. –

Trả lời

35

EDIT: Grrr ... thay đổi nội dung regex do "làm rõ" mới :)

^[A-C][a-zA-Z0-9]{4}$ 

EDIT: Để giải thích Regex ở trên bằng tiếng Anh ...

^$ bình "Từ đầu đến cuối" (điều này đảm bảo rằng toàn bộ chuỗi phải phù hợp một cách hoàn hảo)

[A-C] có nghĩa là "trận đấu hoặc A, B, hoặc C"

[a-zA-Z0-9]{4} có nghĩa là "Trận 4 chữ thường, chữ thường hoặc số "

+0

NB. Điều này sẽ chỉ khớp với mẫu này nếu nó nằm trên một dòng riêng biệt. –

+0

@mats - hoặc trong một biến riêng biệt. –

+0

Bạn có ý gì khi nhận xét dòng riêng biệt? Regex này là hoàn hảo :) –

6

Nội dung nào đó dọc theo dòng:

[A-C][A-Za-z0-9]{4} 

Tôi khuyên bạn nên xem http://regexlib.com/CheatSheet.aspx nếu bạn không quen với các cụm từ thông dụng và tự mình thực hiện các loại regex đơn giản này.

Ngoài ra còn có rất nhiều ứng dụng thử nghiệm regex trực tuyến như: http://regexlib.com/RETester.aspx cho phép bạn kiểm tra các regex của mình mà không cần viết bất kỳ mã nào.

2

Bạn có nghĩa là chữ cái đầu tiên phải là A, B hoặc C không? Hoặc nó có thể là bất kỳ lá thư nào không?

Nếu nó phải là A, B hoặc C (phân biệt chữ hoa chữ thường), thì đây sẽ là cụm từ thông dụng.

[A-C][a-zA-Z0-9]{4} 

Nếu không, các câu trả lời khác tại đây sẽ đủ.

0

Trong trường hợp này là không regexps Perl chúng ta đang nói về, một số cắt-và-dán là cần thiết:

[ABC][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9][a-zA-Z0-9] 

tôi cắt-và-dán "[a-zA-Z0-9]" bốn lần.

+0

Regex dưới đây làm việc cho JavaScript và .NET ... bạn có nói rằng Perl không hỗ trợ {4}, hay bạn đang nói rằng các ngôn ngữ khác không? –

+0

@Timothy - perl hỗ trợ {count}. Tại một thời gian, grep thường xuyên không nhưng egrep đã làm. Vì vậy, các ngôn ngữ khác nhau có các phiên bản khác nhau của "biểu thức chính quy" tùy thuộc vào việc chúng được sao chép từ grep, egrep hoặc perl (hay cái gì khác). –

+0

Cảm ơn - Tôi không biết sâu về độ sâu của Perl, vì vậy tôi đã tự hỏi về nó do câu trả lời này. –

0
/[ABC](?i:[a-z0-9]{4})/ 
0

Hãy thử điều này:

\<[ABC]\([a-zA-Z0-9]{4}\)\> 
1

Câu trả lời này là đúng, nhưng tôi đã muốn thêm rằng bạn có thể rút ngắn nó một chút với những điều sau đây.

^[A-C]\w{4}$ 

\ w có nghĩa là bất kỳ ký tự chữ số nào.

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