$re = '/^((2ª|segunda)|(3ª|terça)|(4ª|quarta)|(5ª|quinta)|(6ª|sexta))(-feira)?$/m';
$str = '2ª
3ª
4ª
5ª
6ª
2ª-feira
3ª-feira
4ª-feira
5ª-feira
6ª-feira
segunda
terça
quarta
quinta
sexta
segunda-feira
terça-feira
quarta-feira
quinta-feira
sexta-feira
oitava-feira
segunda-
2 ª2ª-feira
-feira
feira
22ª
1ª
7ª
ª
aquartado
sextavado';
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