0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

正規表現を自分で考えて書けるようになりたい。。

Last updated at Posted at 2020-11-01

正規表現とは、、?

文字列の集合を一つの文字列で表現する方法の一つである。
正規表現では、「メタ文字」という特殊な文字を使って表現します。(ちなみに全て半角です。)

メタ文字の種類と使い方

  • なんでもいい1文字「.」
    • 半角の「.」を使用すると、なんでもいい1文字を表現することができる。

-例-


私は.です
# =>私は鳥です、私は馬です、私は0です...etc
  • 行の先頭と最後「^」「$」
    • 行の先頭や最後にのみ存在する文字列を検索できる。

-例-


^ありがとう$ 
# =>「ありがとう」の文字だけのある行に合致
  • 同じ文字の繰り返し「*」「+」「?」
    • 「*」は、直前の文字がないか、直前の文字が1個以上連続するという意味。
    • 「+」は、最低でも1個は + の直前の文字がないといけなく、その後は連続するという意味。
    • 「?」は、直前の文字がまったくないか、1つだけあるという意味。

-例-


おー*
# => おい、おーーい、おーーーーい...etc

おー+
# =>おーい、おーーい、おーーーーい...etc

おー?い
# =>おい、おーい...etc
  • いずれかの文字列「|」
    • | で区切られた文字列のいずれかの文字列が存在した時に、正規表現に合致。

-例-


IBM|マイクロソフト|Apple|ネットスケープ
# =>IBM マイクロソフト Apple ネットスケープ
  • 指定した文字のどれか「[ ]」
    • で括られた中の文字は、その中のどれか1つに合致する。
    • [ ]の中ではメタ文字は普通の文字として認識される。

-例-


[A-Z]CCC
# =>A[ABCDEFGHIJKLMNOPQRSTUVWXYZ]CCC 

[0-9]CCC
# =>A[0123456789]CCC

[A-Z0-9]CCC
# =>Aで始り、次の文字が半角の大文字アルファベットか数字で、CCCで終わる文字列の検索
  • グループ化「( )」
    • まとめて数文字単位で処理できる。

-例-


(じゃ)+ーん
# =>じゃーん、じゃじゃーん、じゃじゃじゃーん...etc

明日(ぼく|わたし)は帰宅します
# =>明日ぼくは帰宅します、明日わたしは帰宅します...etc

よく使う正規表現一覧


# 全て数値(全角)
/\A[-]+\z/

# 全て数値(半角)
/\A[0-9]+\z/

# 全て数値(全角,半角)
/\A[0-9-]+\z/

# 半角アルファベット(小文字)
/\A[a-z]+\z/

# 半角アルファベット(大文字)
 /\A[A-Z]+\z/

# 半角アルファベット(大文字・小文字)
 /\A[a-zA-Z]+\z/

# 半角アルファベット(小文字・数値)
/\A[a-z0-9]+\z/

# 半角アルファベット(大文字・数値)
/\A[A-Z0-9]+\z/

# 半角アルファベット(大文字・小文字・数値)
/\A[a-zA-Z0-9]+\z/

# 全角ひらがな
/\A[-んー]+\z/

# 全角カタカナ
/\A[-ヶー]+\z/

# 全角ひらがな、カタカナ
/\A[-んァ-ヶー]+\z/

# 半角カナ
/\A[-ン゙゚]+\z/

# 郵便番号(ハイフンあり3桁・5桁・7桁)
/\A\d{3}-\d{4}$|^\d{3}-\d{2}$|^\d{3}\z/

# 郵便番号(ハイフンあり5桁)
/\A\d{3}-\d{2}\z/

# 郵便番号(ハイフンあり7桁)
/\A\d{3}-\d{4}\z/

# 郵便番号(ハイフンなし3桁)
/\A\d{3}\z/

# 郵便番号(ハイフンなし5桁)
/\A\d{5}\z/

# 郵便番号(ハイフンなし7桁)
/\A\d{7}\z/

# 電話番号(ハイフンなし10桁)
/\A\d{10}\z/

# 携帯番号(ハイフンなし11桁)
/\A\d{11}\z/

# 携帯番号(ハイフンなし10桁or11桁)
/\A\d{10,11}\z/

# e-mail
 /\A\S+@\S+\.\S+\z/

# URL
/\Ahttps?:\/\/([\w-]+\.)+[\w-]+(\/[\w-.\/?%&=]*)?/

# クレジットカード(VISA,Master,Diners,Discover,Amex対応)
/\A(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6011[0-9]{12}|3(?:0[0-5]|[68][0-9])[0-9]{11}|3[47][0-9]{13})\z/

参考

サルにもわかる正規表現入門

Rubyアソシエーション:正規表現

Rubyのバリデーション用正規表現集

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?