It's that + sign you have before the $ sign. It says "allow ONE or MORE of the previous group".
Your regex is saying this, in English: "From beginning to end, find any length of a string that is comprised of single digits, 0-9."
If you take away the plus sign, it's saying: "From beginning to end, find any length of a string that is comprised of one digit, 0-9."
Note that your parenthesis are not necessary, but are not doing any harm, and also that you are passing an integer to ereg as its second argument. You should make it a string first, because ereg expects strings. This wouldn't create an error or anything, but it's good practice.
$answer = 140;
$answer = strval($answer);
echo "answer: ".$answer."<br />";
if( ereg("^[0-9]{1}$", $answer) )
{
echo "passed<br />";
}
else
{
echo "failed<br />";
}