$re = '/\b(?:a*(?:ha*){2,}h?)\b|\b(?:a*(?:ja*)+j?)\b|\b(?:e*(?:je*)+j?)\b|\b(?:i*(?:ji+)+j?)\b|\b(?:A*(?:JA+)+J?)\b|\b(?:A*(?:HA+)+H?)\b|\b(?:e*(?:he+){2,}h?)\b|\b(?:Ja*(?:ja+)+j?)\b|\b(?:Je*(?:je+)+j?)\b|\bJa+\b|\b(?:Ji*(?:ji+)+j?)\b|\b(?:Ha*(?:ha+)+h?)\b|\b(?:Jo*(?:jo+)+j?)\b|\b(?:o*(?:jo+)+j?)\b|\b(?:a*((?:ja+)|(?:js+))+j?)\b|\b(?:A*((?:JA+)|(?:JS+))+J?)\b/m';
$str = 'jajajajajaja
jejejejeje
jijijijijij
ji
ja
je
hahahahahahaaaaa
Hahahaaa
Hahaaahaaha
hahaahaaaah
haaaaahaaahahahaaaaah
heheeheheeeeheeeheh
jajajaj
jaja
ja
jejejej
jeje
je
jijijiji
jiji
ji
ajajajaja
ahahahaha
ejejejeje
aaajajaja
jajaaajajaaajaaaa
JAJAJAJAJAJAJAJ
HAHAHAHAAAAHAHAHAHAAA
Hahahahahaha
JAJAJAJA
AAJAJAJA
JAJAAAJAJAJAAAAJ
he
hehe
haha
ha
has
hamaca
Jajajajaja
Jaja
Jejejejejeje
Jaa
Jijijijiiiiji
jiiijijijiiijijijiii
Jojojojojoj
jojojoj
Hahaa
Jejeee
jajaaaa
Jajaaaa
jajaj
jajajajsjaja
jajajssjsjsjajsja
jsjsjsjsjsjsj
JAJAJSJAJSSJAJSJSJAJSSSSJ
';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for PHP, please visit: http://php.net/manual/en/ref.pcre.php