Yes, it is possible although cumbersome. It looks something like this:
check ((col regexp_matches '^[0-9]{9}$) and
(case when (substring(col, 1, 1) * 9 + substring(col, 2, 1) * 8 + substring(col, 3, 1) * 7 +
substring(col, 4, 1) * 6 + substring(col, 5, 1) * 5 + substring(col, 6, 1) * 4 +
substring(col, 7, 1) * 3 + substring(col, 8, 1) * 2
) % 11 = 0 or
(substring(col, 1, 1) * 9 + substring(col, 2, 1) * 8 + substring(col, 3, 1) * 7 +
substring(col, 4, 1) * 6 + substring(col, 5, 1) * 5 + substring(col, 6, 1) * 4 +
substring(col, 7, 1) * 3 + substring(col, 8, 1) * 2
) = 1
then 0
else 11 -
((substring(col, 1, 1) * 9 + substring(col, 2, 1) * 8 + substring(col, 3, 1) * 7 +
substring(col, 4, 1) * 6 + substring(col, 5, 1) * 5 + substring(col, 6, 1) * 4 +
substring(col, 7, 1) * 3 + substring(col, 8, 1) * 2
) % 11
)
end) = substring(col, 9, 1) + 0
)
Personally, I would encapsulate it in a function and use the function instead.