$re = '/(?<=[\s\.\,\!\?\"\;\:]|^)(?=[A-Za-z\']*?[bcdfghj-np-tvwxyzBCDFGHJ-NP-TVWXYZ])(?=[A-Za-z\']*?[aeiouyAEIOUY\'])(?:[A-Za-z](?:\'?[A-Za-z]){2}|(?:\'?[A-Za-z]){2}[A-Za-z])\b\'?(?=[\s\.\,\!\?\"\;\:]|$)/m';
$str = 'This regex matches any three letter string that has at least one vowel and at least one consonant. As you can see, it\'s very effective and it only matches 3 letter words.
The word "I\'ll" should count as a 3 letter word. Words like "isn\'t," "you\'dn\'t\'ve," and "let\'s" shouldn\'t. Jo\'s dog is smart. The quick brown dog jumped over the lazy fox.
The qis\' house. "qis\'" is just a made up word to test stuff like "kids\'" but for 3 letters.
asd
\'asd
a\'sd
as\'d
asd\'';
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