Help us understand the problem. What is going on with this article?

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

More than 3 years have 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} ー-]+/

半角文字以外

/[^ -~。-゚]+/

参考

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした