39
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

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

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

追記

コメントでご指摘頂いた用に、今から述べる方法は\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} ー-]+/

半角文字以外

/[^ -~。-゚]+/

参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
39
Help us understand the problem. What are the problem?