Những câu trả lời khác là hoàn toàn tốt cho vấn đề cụ thể của bạn, nhưng như Paulpro lưu ý thực sự có được ra khỏi tay khi bạn có nhiều hơn hai từ.
Cách dễ nhất là sử dụng nhiều lần kiểm tra như Explosion Pills gợi ý.
Nhưng đối với một khả năng mở rộng hơn regex chỉ tiếp cận bạn có thể sử dụng lookaheads:
/^(?=.*google)(?=.*microsoft)(?=.*apple).../
Các lookahead không thực sự tiêu thụ bất cứ điều gì, vì vậy sau khi điều kiện đầu tiên được kiểm tra (mà .*google
thể phù hợp), bạn có trở lại ở đầu chuỗi và có thể kiểm tra điều kiện tiếp theo. Các mô hình chỉ vượt qua nếu tất cả các lookaheads làm.
Lưu ý rằng nếu đầu vào của bạn có thể bị ngắt dòng, .*
sẽ không hoạt động. Bạn sẽ phải sử dụng [^]*
hoặc [\s\S]*
thay vào đó (cùng với câu trả lời của người khác).
Nguồn
2013-08-28 19:37:34
@ m.buettner điểm tuyệt vời. –
Tôi biết rằng tôi có thể sử dụng 'match' hai lần nhưng tôi muốn nó với regex để làm cho nó ngắn hơn .. nhưng với regex nó có vẻ dài hơn bằng cách sử dụng' match' hai lần – Enve
@Enve ngắn mã không nhất thiết phải là nhất có thể đọc được. Đặc biệt nếu mã "dài" đã khớp với một hoặc hai dòng. –