Ruby

全角カタカナにのみマッチする正規表現

More than 1 year has passed since last update.

宗教上の理由で全角カタカナのみで構成された文字列にマッチする正規表現を書きました。

追記

コメントでご指摘頂いた用に、今から述べる方法は\p{katakana}に含まれる文字列の内、半角文字を除いたものに過ぎません。どういった文字が含まれてるかについては、Rubyの正規表現の/[\p{katakana}]/ ってなんなのという記事が参考になります。

記号みたいな文字も含まれてるので、実用には @rst76 さんのコメントにある[ァ-ヶ]での指定(必要に応じて記号も追加)が適しているんじゃないかなぁと思います。

お前ら、この世界線ではカタカナやったんか……。

全角カタカナ

/[\p{katakana} ー-&&[^ -~。-゚]]+/

おそらくこれで大丈夫だと思います。
心配な方はこちらで試してみてください。

ActiveRecord での利用

ActiveRecord の validation へは以下のように適用できます。

validates :name, presence: true,
                 format: {
                   with: /\A[\p{katakana} ー-&&[^ -~。-゚]]+\z/,
                   message: "全角カタカナのみで入力して下さい"
                 }

解説

カタカナのみという集合と半角文字以外という集合の積をとっています。

カタカナのみ

以下の正規表現は半角カタカナにもマッチします。
また、全角スペースと長音は\p{katakana}に含まれていないそうなので、明示的に加えています。

/[\p{katakana} ー-]+/

半角文字以外

/[^ -~。-゚]+/

参考