2016-10-18 13 views
7

Làm thế nào để làm cho một regex mà thi hành:Regex trong php - chữ và số với chiều dài hạn chế

  • chữ và số (ít nhất 1 trong tổng số mỗi)
  • phút và thời gian tối đa (10 đến 50)
  • không có gì khác ngoài chữ cái hoặc số

khi sử dụng tiền tố php?


Đây là những gì tôi nhận:

^[A-Za-z0-9]{10,50}$ 

Có vẻ như để làm tất cả mọi thứ ngoại trừ thực thi chữ và số.

Trả lời

5

Đỗ:

^(?=.*(?:[A-Za-z].*\d|\d.*[A-Za-z]))[A-Za-z0-9]{10,50}$ 
  • (?=.*(?:[A-Za-z].*\d|\d.*[A-Za-z])) là zero chiều rộng lookahead tích cực, điều này làm cho chắc chắn rằng có ít nhất một lá thư, và một chữ số hiện

  • [A-Za-z0-9]{10,50} đảm bảo trận đấu chỉ chứa chữ và các chữ số

Demo


Hoặc thậm chí sạch, sử dụng hai lookaheads thay vì OR-ing (nhờ chris85):

^(?=.*[A-Za-z])(?=.*\d)[A-Za-z0-9]{10,50}$ 
+0

nhờ nó hoạt động bro, tôi chỉ kiểm tra này trên cùng một trang web – Ibrahim

+2

Tôi sẽ thêm ở đây, https://regex101.com/r/TTeWKd/1, có thể sử dụng 2 cái nhìn mà không cần phải kiểm tra ký tự 'hoặc' và nhân đôi. – chris85

+0

@ chris85 Thats cleaner, bổ sung. cảm ơn. – heemayl

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