Я не знаю, насколько регулярные выражения в C # совместимы с Perl, но я стараюсь не изобретать колесо, если оно не нужно изобретать:
% perl -e 'use Regexp::Common; print $RE{num}{real}, "\n"'
(?:(?i)(?:[+-]?)(?:(?=[0123456789]|[.])(?:[0123456789]*)(?:(?:[.])(?:[0123456789]{0,}))?)(?:(?:[E])(?:(?:[+-]?)(?:[0123456789]+))|))
Теперь я не понимаю, почему они не использовали [0-9], но это хорошо работает.