(ruby 1.9.2)
#encoding: UTF-8
class String
def contains_cjk?
!!(self =~ /\p{Han}|\p{Katakana}|\p{Hiragana}|\p{Hangul}/)
end
end
strings= ['日本', '광고 프로그램', '艾弗森将退出篮坛', 'Watashi ha bakana gaijin desu.']
strings.each{|s| puts s.contains_cjk?}
#true
#true
#true
#false
\ p {} соответствует сценарию Unicode персонажа.
Поддерживаются следующие сценарии: арабский, армянский, балийский, бенгальский, бопомофо, шрифт Брайля, бугинскийBuhid, Canadian_Aboriginal, Carian, Cham, Cherokee, Common, Coptic, Cuneiform, Кипр, Кириллица, Дезерет, Деванагари, Эфиопский, Грузинский, Глаголица, Готский, Греческий, Гуджарати, Гурмукхи, Хан, Хангул, Хануно, Хевериан, Хевери, Каннада, Катакана, Kayah_Li, Харошти, Кхмерский, Лаосский, Латиноамериканский, Лепча, Лимбу, Linear_B, Ликийский, Лидийский, Малайялам, Монгольский, Мьянма, New_Tai_Lue, Нко, Огам, Ол-Чики, Олд-Итал, Ориан-Пьяц, Пьяця, Реджанг, Рунический, Саураштра, Шавский, Сингальский, Сунданский, Силоти-Нагри, Сирийский, Тагальский, Тагбанва, Тай_Ле, Тамильский, Телугу, Таана, Тайский, Тибетский, Тифинагский, Угаритский, Вайский и Йи.
Вау. Источник Ruby Regexp .