Regex.IsMatch( "foo", "[\U00010000-\U0010FFFF]" )
Выдает: System.ArgumentException: анализ диапазона «[-]» - [x-y] в обратном порядке.
Глядя на шестнадцатеричные значения для \ U00010000 и \ U0010FFF, я получаю: 0xd800 0xdc00 для первого символа и 0xdbff 0xdfff для второго.
Так что, думаю, у меня действительно есть одна проблема. Почему символы Юникода, образованные с \ U, разделяются на две буквы в строке?