$re = '/^(?=.*\b401\b)(?=.*?\be?30(?:th|st)?\b).*/m';
$str = '401 300th st
40120 30 street
30 401 plz
401 30th st
401 e gibbsborro rd, 305
401 e 30th street, shelter
401 east 30st
401 e30th street, 3
77-02 30th ave, 3rd fl
401 e30 st.
';
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