Tôi cần phải kiểm tra xem chuỗi có tuân thủ định dạng ID cụ thể hay không.Tôi có thể rút ngắn biểu thức chính quy này không?
Định dạng của ID là như sau:
aBcDe-fghIj-KLmno-pQRsT-uVWxy
Một chuỗi các năm dãy năm chữ cái chữ hoa hoặc chữ thường, cách nhau bằng một dấu gạch ngang.
Tôi có biểu hiện thường xuyên sau đó hoạt động:
string idFormat = "[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}[-]{1}[a-zA-Z]{5}";
Lưu ý rằng không có dấu gạch ngang đuôi, nhưng tất cả các khối trong ID theo các định dạng tương tự. Do đó, tôi muốn có thể trình bày chuỗi bốn khối này với dấu gạch ngang bên trong biểu thức chính quy và tránh trùng lặp.
Tôi đã thử các sau đây, nhưng nó không hoạt động:
string idFormat = "[[a-zA-Z]{5}[-]{1}]{4}[a-zA-Z]{5}";
Làm thế nào để rút ngắn thời biểu thức chính quy này và thoát khỏi những phần nhân đôi?
Cách tốt nhất để đảm bảo rằng mỗi khối cũng không chứa bất kỳ số nào?
Edit:
Cảm ơn đã trả lời, bây giờ tôi hiểu được nhóm trong biểu thức thông thường.
Tôi đang chạy một vài thử nghiệm chống lại các biểu hiện thường xuyên, sau đây là có liên quan:
Test 1: aBcDe-fghIj-KLmno-pQRsT-uVWxy
thử nghiệm 2: abcde-fghij-klmno-pqrst-uvwxy
Với biểu thức chính quy sau, cả hai bài kiểm tra qua:
^([a-zA-Z]{5}-){4}[a-zA-Z]{5}$
với sự biểu hiện thường xuyên tới, kiểm tra 1 thất bại:
^([a-z]{5}-){4}[a-z]{5}$
Một số câu trả lời đã nói rằng bạn có thể bỏ qua A-Z khi sử dụng a-z, nhưng trong trường hợp này dường như nó không hoạt động.
Vui lòng kiểm tra bài đăng đã chỉnh sửa, tôi gặp sự cố khi nhận regex chỉ hoạt động với a-z ngược với a-zA-Z – fletcher
@fletcher: bạn cần * chỉ định * rằng regex phải phân biệt chữ hoa chữ thường. làm thế nào bạn làm điều đó phụ thuộc vào ngôn ngữ bạn đang làm điều này trong javascript, nó là với 'i' như trong ví dụ của tôi, trong C# nó là 'mới Regex (mô hình, RegexOptions.IgnoreCase);' Cũng có trường hợp nơi bạn * không thể * làm cho nó không phân biệt chữ hoa chữ thường, chẳng hạn như các điều khiển của ASP.NET RegexValidator, không hỗ trợ RegexOptions và có thể một số ngôn ngữ lập trình có thể không hỗ trợ nó. –
Sự cố được giải quyết. Cảm ơn David – fletcher