$re = '/(?P<Day>\d+\w*)[\s|\S](?P<Month>Jan\w*|Feb\w*|March\w*|Apr\w*|May\w*|Mei\w*|Jun\w*|Jul\w*|Aug\w*|Ogos\w&|Sep\w*|Oct\w*|Okt\w*|Nov\w*|Dec\w*|Dis\w*)/ui';
$str = '21 July
21st July
21 people
1 January
2 Jan
20 Mei
25 May
30 Julai
31 Julai
30 Oktober
21July';
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