Diğer yanıtlayıcıların bazılarının söylediği gibi lookahead'i kullanmanız gerekir, ancak lookahead'in hedef sözcüğü ile geçerli eşleşme konumu arasındaki diğer karakterleri hesaba katması gerekir. Örneğin:
(?=.*word1)(?=.*word2)(?=.*word3)
.*
İlk lookahead o buna "word1" bulmadan gerekiyor ancak birçok karakterlerle eşleşen sağlar. Sonra eşleşme konumu sıfırlanır ve ikinci ileriye doğru "word2" arar. Yeniden sıfırlayın ve son bölüm "word3" ile eşleşir; kontrol ettiğiniz son kelime olduğu için, bunun bir göz önünde olması gerekli değildir, ancak zarar vermez.
Bir paragrafın tamamını eşleştirmek için, normal ifadeyi her iki uçta tutturmanız .*
ve kalan karakterleri tüketmek için bir final eklemeniz gerekir. Perl tarzı gösterimi kullanmak, şöyle olur:
/^(?=.*word1)(?=.*word2)(?=.*word3).*$/m
'M' değiştirici çok satırlı mod içindir; paragraf sınırlarında ^
ve $
eşleşmesine izin verir (normal ifadede "satır sınırları"). Size bu durumda önemlidir değil kullanmak 's' değiştirici, nokta işleci maç yeni satır yanı sıra tüm diğer karakterler sağlayan bir özelliktir.
Son olarak, sadece daha uzun kelimelerin parçalarını değil, tüm kelimeleri eşleştirdiğinizden emin olmak istersiniz, bu nedenle kelime sınırları eklemeniz gerekir:
/^(?=.*\bword1\b)(?=.*\bword2\b)(?=.*\bword3\b).*$/m