Изменить: как отмечено в комментариях, символы Unicode\u4E00-\u9FA5 только сопоставляются с выражением выше в кодировке UTF16-BE. Кодировка UTF8, вероятно, будет отличаться. Поэтому вам нужно тщательно проанализировать отображение и посмотреть, можете ли вы найти выражение для байт-выражения для Ruby 1.8.
Ответ 2
Это то, что я сделал:
%r{^[#{"\344\270\200"}-#{"\351\277\277"}]+$}
Это в основном регулярное выражение с восьмеричными значениями, которые представляют диапазон между U + 4E00 и U + 9FFF, наиболее распространенными китайскими и японскими символами.
Ответ 3
Oniguruma двигатель regexp имеет надлежащую поддержку Unicode. Ruby 1.9 использует Oniguruma по умолчанию. Ruby 1.8 можно перекомпилировать, чтобы использовать его.
С Oniguruma вы можете использовать то же самое регулярное выражение, что и в PHP, включая модификатор /u, чтобы заставить Ruby обрабатывать строку как UTF-8.