scrupul0s, \d is already a short hand character class for [0-9]. So as Brad mentioned, no need for []. However, there is one caveat... depending on your locale, \d might also accept exponents.. (I'm going to hazzard a guess that the odds of running into exponents is slim to none (much like my chances of winning the lottery)).
But to be sure, if using character class shorthands like \d, you can set your LC_CTYPE to 'C' prior to any regex like so:
setlocale(LC_CTYPE, 'C');
Likewise, this also applies to \w. Typically, that shorthand character class is viewed as pretty much the equivalent to [a-zA-Z0-9], but again, depending on your locale, this class might also include exponents and accented characters as well. So by setting LC_CTYPE, those issues are eliminated (as in, \d will in fact only check for [0-9] while \w will only check for [a-zA-Z0-9]). All of this also applies to stuff like ctype_digit(), ctype_alnum(), etc...