Adam Ramadhan
Adam Ramadhan

Reputation: 22810

regex match if string contain all the words or a condition

im making a simple word game with php and regex, how can we search that if a string have to require two or more words?

lets say

"cat"
"dog"
"play" x 2

if

"cat dog play play" pass

"hello a cat dog playing a play" not pass, only 1 "play"

"cat" not pass, no dog and 2x play

"i want a cat and a dog play with me and play with grandfather" pass

how can we match it with regex?

Upvotes: 5

Views: 10670

Answers (2)

anubhava
anubhava

Reputation: 785376

The regex you're looking for is:

/(?=.*?\bcat\b)(?=.*?\bdog\b)(?=(.*?\bplay\b){2})^.*$/

Explanation: I believe words cat, dog and play (twice) can appear in the text in any order but they must all be present in the sentence to qualify. Above regex is using positive lookahead to make sure the presence of above conditions.

Here is the online working demo of above RegEx

Upvotes: 8

Danilo Valente
Danilo Valente

Reputation: 11352

Try preg_match_all(/cat.+dog(.+play){2}/i,$str,$out);

Upvotes: 2

Related Questions