coincidencia de expresiones regulares si la cadena contiene todas las palabras o una condición

Estoy haciendo un juego de palabras simple con php y regex, ¿cómo podemos buscar eso si una cadena tiene que requerir dos o más palabras?

digamos

"cat"
"dog"
"play" x 2

Si

"perro gato juega a jugar"pasar

"hola un perro gato jugando una obra"no pasar, solo 1 "play"

"gato"no pasar, no perro y juego 2x

"Quiero que un gato y un perro jueguen conmigo y jueguen con mi abuelo"pasar

¿Cómo podemos emparejarlo con expresiones regulares?

Respuestas a la pregunta(2)

Su respuesta a la pregunta