Ruby の正規表現
◉正規表現をModelsに書くことになったが、
暗号にしか見えない。
'アイウエオ' =~ /\A[\p{katakana}]+\z/ #=> 0 'あいうえお' =~ /\A[\p{katakana}]+\z/ #=> nil 'アイウエオあいうえお' =~ /\A[\p{katakana}]+\z/ #=> nil 'イロハニホヘトチリヌルヲ' =~ /\A[\p{katakana}]+\z/ #=> 0 'イロハニホヘトチリヌルヲワカヨタレソツネナラムウヰノオクヤマケフコエテアサキユメミシヱヒモセス' =~ /\A[\p{katakana}]+\z/ #=> 0 'イロハニホヘトチリヌルヲワカヨタレソツネナラム' =~ /\A[\p{katakana}]+\z/ #=> 0
なんのこっちゃ???
と定義を調べていくと、以下のような決まりのようだ。
30A1..30FA ; Katakana # Lo [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
30FD..30FE ; Katakana # Lm [2] KATAKANA ITERATION MARK..KATAKANA VOICED ITERATION MARK
30FF ; Katakana # Lo KATAKANA DIGRAPH KOTO
31F0..31FF ; Katakana # Lo [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
32D0..32FE ; Katakana # So [47] CIRCLED KATAKANA A..CIRCLED KATAKANA WO
3300..3357 ; Katakana # So [88] SQUARE APAATO..SQUARE WATTO
FF66..FF6F ; Katakana # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
FF71..FF9D ; Katakana # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
1B000 ; Katakana # Lo KATAKANA LETTER ARCHAIC E
# Total code points: 300
◉30A1..30FA, 30FD..30FE, 30FFとは?
◉32D0..32FE
○付きのカタカナ
◉FF66..FF6F, FF71..FF9D
半角カタカナ
都度調べて書くしかなさそうだ。