Регулярные выражения: \D <> [^\d]

Роберт

Аналитик
Регулярные выражения: \D <> [^\d]

С регулярными выражениями работаю уже лет 10 , но не могу понять почему в некоторых случаях \D работает не так как [^\d]
Вот например надо найти число "222" перед которым не должна стоять цифра.
Если пишешь (^|\D)222 - то НЕ работает если 222 в самом начале строки.
А выражение (^|[^\d])222 - работает нормально.
Получается что \D <> [^\d] ?

Хотя в документациях:
\D - это любой символ - не 10-ричное число
\D - "не \d"
 

Wicked

Новичок
Код:
$str = "222";
var_dump(preg_match("/(^|\D)222/", $str));
var_dump(preg_match("/(^|[^\d])222/", $str));
int(1)
int(1)
 
Сверху