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 5 years have passed since last update.

正規表現についてまとめ

Posted at

#正規表現とは
特殊な文字を組み合わせてパターンを作ることで、ある文字列に特定の文字が含まれているかを確認することや、特定の文字を取り除くなどの操作を行うことができます。

##正規表現の記号と意味

記号 記号の説明 例   例の説明        
. 任意の一文字 .+ 任意の文字列と一致
* 直線の一文字の0回以上の繰り返しと一致 ruby* rubyもしくはrubyy..と一致
^ 行の先頭 ^[a-z] 行頭が小文字のアルファベットと一致
$ 行の文末 rb$ 文末がrbと一致
[] []内の任意の文字と一致 [a-z] 小文字のアルファベットと一致
[^] []内の任意の文字と不一致 [^a-z] 小文字のアルファベット以外と一致
+ 直前の文字の1個以上の繰り返し cs+ CSS..と一致
? 直前の文字が0個または1個以上の場合一致 Windows? WindowまたはWindowsと一致
{} {}内の数値の繰り返しと一致 {n} 直前の文字のn個の繰り返しと一致
{} {}内の数値の繰り返しと一致 {,n} 直前の文字のn個以下の繰り返しと一致
{} {}内の数値の繰り返しと一致 {m,} 直前の文字のm個以上の繰り返しと一致
{} {}内の数値の繰り返しと一致 {m,n} 直前の文字のm個以上、n個以下のの繰り返しと一致
| |の直前と直後どれかに一致 Ruby|Java RubyまたはJavaに一致
() カッコ内をグループ化 - -

文字を表す正規表現

記号 意味
. 任意の1文字
\d 数字1文字
\D 数字以外1文字
\w アルファベット、数字、アンダスコア( _ )のどれかの1文字
\W アルファベット、数字、アンダスコア以外の1文字
\s 半角スペース、タブ、改行のどれか1文字
\S 半角スペース、タブ、改行以外のどれか1文字
\t タブ
\r キャリッジリターン(カーソルを文頭に戻す)
\b 単語の境界
\文字 特殊文字のエスケープ

##正規表現の使い方
正規表現をプログラミングする方法は2種類あります。
1、正規表現のパターンを直接指定するリテラルを使用する方法
2、コンストラクタを使用する方法

###1、正規表現のパターンを直接指定するリテラルを使用する方法
例えば携帯電話番号のフォーマットチェックを行う場合は、以下のように使用します。

var phone_number = /^\d{3}-?\d{4}-?\d{4}$/;

^\d{3}-?\d{4}-?\d{4}$を先頭から
 1. ^\d{3}
 2. -?
 3. \d{4}
 4. -?
 5. \d{4}$
に分解してみていきます。

  1. 先頭が数字が連続して3文字となっているかをチェックします。
  2. ハイフンあり・なしどちらで入力されてもいいように、-の後ろに?がつきます。
  3. 1とほぼ同じで、数字が連続して4文字となっているかをチェックします。ここは先頭ではないため、^は不要です。
  4. 2と同様
  5. 1、3とほぼ同様ですが、末尾なので、$がつきます。

###2、コンストラクタを使用する方法
以下のように、RegExpの引数に文字列の正規表現を指定して使用します。

var phone_number = new RegExp('^\d{3}-?\d{4}-?\d{4}$');

##どちらの方法を使用したほうが良いのか
プログラムの途中で正規表現のパターンが変更される場合や外部から取得される場合は、RegExpコンストラクタを使用するほうが良いとされています。
逆に、正規表現のパターンが全く変わらないのであれば、直接リテラルを使用するほうが良いとされています。

0
0
0

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?