2012-05-03 34 views
17

Vui lòng hỗ trợ đối sánh RegEx phù hợp. Bất kỳ 2 chữ cái nào được theo sau bởi bất kỳ kết hợp nào của 6 số nguyên.Mẫu RegEx bất kỳ hai chữ cái nào theo sau là sáu số

These would be valid: 
RJ123456 
PY654321 
DD321234 

These would not 
DDD12345 
12DDD123 
+0

Còn về "ABC1234567"; nó có thể xảy ra không? – Phrogz

+0

Sẽ không có trường hợp nào nhiều hơn hai chữ cái hoặc 6 số. – Fergus

+3

Liệu "toàn bộ số" luôn là chữ số Ả Rập phương Tây '0-9', hay sẽ có [chữ số khác] (http://en.wikipedia.org/wiki/Numerical_digit#Numerals_in_most_popular_systems)? – Phrogz

Trả lời

55

[a-zA-Z]{2}\d{6}

[a-zA-Z]{2} nghĩa hai chữ \d{6} nghĩa 6 chữ số

Nếu bạn muốn chỉ chữ hoa, sau đó:

[A-Z]{2}\d{6}

+0

hoạt động tuyệt vời .... – Fergus

+0

bạn quên bắt đầu với ^, nếu không, nếu bạn có nhiều hơn 2 chữ cái, nó sẽ khớp một phần. –

16

Bạn có thể thử một cái gì đó như thế này:

[a-zA-Z]{2}[0-9]{6} 

Dưới đây là bảng phân tích về khái niệm:

[a-zA-Z] # Match a single character present in the list below 
       # A character in the range between “a” and “z” 
       # A character in the range between “A” and “Z” 
    {2}   # Exactly 2 times 
[0-9]  # Match a single character in the range between “0” and “9” 
    {6}   # Exactly 6 times 

này sẽ phù hợp bất cứ nơi nào trong một chủ đề. Nếu bạn cần ranh giới xung quanh đối tượng thì bạn có thể thực hiện một trong các thao tác sau:

^[a-zA-Z]{2}[0-9]{6}$ 

Đảm bảo rằng toàn bộ đối tượng phù hợp. I. không có gì trước hoặc sau chủ đề.

hoặc

\b[a-zA-Z]{2}[0-9]{6}\b 

đảm bảo có một word boundary trên mỗi bên của đối tượng.

Như được chỉ ra bởi @Phrogz, bạn có thể làm cho biểu thức trở nên rõ ràng hơn bằng cách thay thế [0-9] cho một số \d như trong một số câu trả lời khác.

[a-zA-Z]{2}\d{6} 
+0

@Phrogz haha, đó là một vấn đề ưu tiên tôi đoán, tôi thường sử dụng '\ d', nhưng ngày nay tôi không cảm thấy gì khác. Tôi sẽ nỗ lực nhiều hơn và cập nhật nó cho bạn. – Robbie

+0

+1 Để được thấu đáo và hiểu biết;) – Phrogz

+0

Điều này thực sự hữu ích. Cả hai đều làm việc .. THANK YOU – Fergus

5

tôi phụ thuộc vào regexp là gì ngôn ngữ bạn sử dụng, nhưng không chính thức, nó sẽ là:

[:alpha:][:alpha:][:digit:][:digit:][:digit:][:digit:][:digit:][:digit:] 

nơi [:alpha:] = [a-zA-Z][:digit:] = [0-9]

Nếu bạn sử dụng một ngôn ngữ regexp cho phép lặp lại hữu hạn, đó sẽ như thế nào:

[:alpha:]{2}[:digit:]{6} 

Cú pháp đúng phụ thuộc vào ngôn ngữ cụ thể bạn sử dụng, nhưng đó là ý tưởng.

+0

[[: alpha:]] thay vì [: alpha:] để tìm 2alpha và 6 chữ số [[: alpha:]] {2} [[: digit:]] {6} –

2

Tùy thuộc vào nếu hương vị regex của bạn hỗ trợ nó, tôi có thể sử dụng:

\b[A-Z]{2}\d{6}\b # Ensure there are "word boundaries" on either side, or 

(?<![A-Z])[A-Z]{2}\d{6}(?!\d) # Ensure there isn't a uppercase letter before 
           # and that there is not a digit after 
2

Tất cả những gì bạn cần ở đây có thể được tìm thấy trong this quickstart guide. Một giải pháp đơn giản sẽ là [A-Za-z][A-Za-z]\d\d\d\d\d\d hoặc [A-Za-z]{2}\d{6}.

Nếu bạn chỉ muốn chấp nhận các chữ cái viết hoa, hãy thay thế [A-Za-z] bằng [A-Z].

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