Это может быть "ленивый", совпадающий с первым потенциальным совпадением, то есть "1" против "10". Возможно, попробуйте изменить порядок:
"^(10|[0-9])"
Это означает, что регулярное выражение сначала проверяет «10», и проверяет [0-9], только если нет «10»
Если это не сработает, возможно, есть флаг, который вы можете