🔅Tips
正則表現とは?
正規表現とは 「正規表現」とは、「検索」や「置換」で指定する文字列をパターン表現する方法で、プログラミング言語やテキストエディタなどで利用できます。
正規表現を考えた人は誰ですか?
正規表現は,歴史的には1940年代の形式言語論に由来しますが,C言語とUNIXの開発に貢献したKen Thompson氏が1970年前後にQEDというエディタ・ソフトウエア(エディタ),ついでedと呼ばれるUNIX上のエディタに文字列検索用として組み込んだことから,コンピュータの世界でも利用されるようになりました。
正規表現のチートシート
基本的なメタ文字
パターン |
説明 |
. |
任意の1文字 |
^ |
行の先頭 |
$ |
行の末尾 |
* |
直前の文字が0回以上繰り返される |
+ |
直前の文字が1回以上繰り返される |
? |
直前の文字が0回または1回繰り返される |
\ |
エスケープ文字(メタ文字を文字として扱う) |
文字クラス
パターン |
説明 |
[abc] |
a 、b 、c のいずれか1文字 |
[^abc] |
a 、b 、c 以外の任意の1文字 |
[a-z] |
小文字のアルファベット1文字 |
[A-Z] |
大文字のアルファベット1文字 |
[0-9] |
数字1文字 |
\d |
数字1文字([0-9] と同じ) |
\D |
数字以外の1文字([^0-9] と同じ) |
\w |
英数字またはアンダースコア1文字([a-zA-Z0-9_] と同じ) |
\W |
英数字またはアンダースコア以外の1文字([^a-zA-Z0-9_] と同じ) |
\s |
空白文字(スペース、タブ、改行など) |
\S |
空白文字以外の1文字 |
繰り返し
パターン |
説明 |
{n} |
直前の文字がちょうどn回繰り返される |
{n,} |
直前の文字がn回以上繰り返される |
{n,m} |
直前の文字がn回以上m回以下繰り返される |
グループ化と参照
パターン |
説明 |
(abc) |
abc のグループ |
(?:abc) |
非キャプチャグループ(後方参照しない) |
\1 , \2 , ... |
キャプチャグループの後方参照 |
位置指定子
パターン |
説明 |
\b |
単語の境界 |
\B |
単語の境界以外 |
例
パターン |
説明 |
^\d{3}-\d{4}$ |
郵便番号(例: 123-4567) |
^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ |
メールアドレス |
\b\d{3}-\d{4}\b |
文中の郵便番号(例: "住所は123-4567です") |
正規表現の使用例
使用例 |
説明 |
str.replace(/a/g, '') |
特定の文字(例: a )を除外する |
str.match(/\d+/g) |
数字のみを抽出する |
str.match(/[ァ-ヶー]+/g) |
カタカナのみを抽出する |
str.match(/[ぁ-ん]+/g) |
ひらがなのみを抽出する |
str.match(/[a-zA-Z]+/g) |
アルファベットのみを抽出する |
str.match(/[A-Z]+/g) |
大文字のみを抽出する |
str.match(/[a-z]+/g) |
小文字のみを抽出する |
使用例のコード
const str1 = "apple banana grape";
const result1 = str1.replace(/a/g, '');
console.log(result1);
const str2 = "abc123def456";
const result2 = str2.match(/\d+/g);
console.log(result2);
const str3 = "カタカナとひらがなと漢字";
const result3 = str3.match(/[ァ-ヶー]+/g);
console.log(result3);
const str4 = "カタカナとひらがなと漢字";
const result4 = str4.match(/[ぁ-ん]+/g);
console.log(result4);
const str5 = "abc123DEF456";
const result5 = str5.match(/[a-zA-Z]+/g);
console.log(result5);
const str6 = "abcDEFghi";
const result6 = str6.match(/[A-Z]+/g);
console.log(result6);
const str7 = "abcDEFghi";
const result7 = str7.match(/[a-z]+/g);
console.log(result7);
log
pple bnn grpe
[ '123', '456' ]
[ 'カタカナ' ]
[ 'とひらがなと' ]
[ 'abc', 'DEF' ]
[ 'DEF' ]
[ 'abc', 'ghi' ]
Discussion