JavaScript/RegExp
表示
RegExpオブジェクトは、正規表現を扱うためのラッパーオブジェクトです。RegExpオブジェクトのすべてのインスタンスは、RegExpオブジェクトのプロトタイプであるRegExp.prototype
を継承します。RegExp.prototype
に定義されたすべてのプロパティやメソッドは、RegExpオブジェクトのインスタンスから参照することができます。RegExpオブジェクトはObjectオブジェクトのプロパティやメソッドを継承します。
正規表現の作成
[編集]正規表現は、リテラル記法またはコンストラクタを使用して作成できます。
リテラル記法
[編集]const regex = /pattern/flags;
コンストラクタ記法
[編集]const regex = new RegExp('pattern', 'flags');
静的メソッド
[編集]プロパティ
[編集]- RegExp.$&
- RegExp.$'
- RegExp.$+
- RegExp.$1
- RegExp.$2
- RegExp.$3
- RegExp.$4
- RegExp.$5
- RegExp.$6
- RegExp.$7
- RegExp.$8
- RegExp.$9
- RegExp.$_
- RegExp.$`
- RegExp.input
- RegExp.lastMatch
- RegExp.lastParen
- RegExp.leftContext
- RegExp.length
- RegExp.name
- RegExp.prototype
- RegExp.rightContext
インスタンスメソッド
[編集]- RegExp.prototype.compile()
- RegExp.prototype.constructor()
- RegExp.prototype.exec()
- 指定された文字列に対して正規表現の検索を実行し、結果の配列を返します。
- RegExp.prototype.test()
- 指定された文字列に対して正規表現の検索を実行し、マッチするかどうかを真偽値で返します。
- RegExp.prototype.toString()
- 正規表現オブジェクトを文字列に変換して返します。
パターン
[編集]正規表現のパターンは、文字列の検索や置換を行うための強力なツールです。正規表現のパターンは、特定の文字列パターンを表現するために使用される特殊な構文です。この節では、正規表現のパターンの構文とその構成要素について詳しく説明します。
パターンの基本構文
[編集]正規表現のパターンは、以下のような基本要素から構成されます。
- リテラル文字: 文字そのものを表します。例えば、
a
は文字 "a" にマッチします。 - メタ文字: 特殊な意味を持つ文字です。例えば、
.
は任意の1文字にマッチします。
以下に、主要なメタ文字とその意味を示します。
メタ文字 | 説明 |
---|---|
. |
任意の1文字にマッチします。 |
^ |
文字列の先頭にマッチします。 |
$ |
文字列の末尾にマッチします。 |
\ |
エスケープ文字。次の文字をリテラルとして扱います。 |
* |
直前の文字が0回以上繰り返されることにマッチします。 |
+ |
直前の文字が1回以上繰り返されることにマッチします。 |
? |
直前の文字が0回または1回現れることにマッチします。 |
{n} |
直前の文字がちょうどn回現れることにマッチします。 |
{n,} |
直前の文字がn回以上現れることにマッチします。 |
{n,m} |
直前の文字がn回以上m回以下現れることにマッチします。 |
[文字] |
角括弧内の任意の1文字にマッチします。 |
[^文字] |
角括弧内の以外の任意の1文字にマッチします。 |
| |
OR条件を表します。 |
パターンの例
[編集]以下に、いくつかの正規表現パターンの例を示します。
例1: メールアドレスの検索
[編集]const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; console.log(emailPattern.test('example@example.com')); // true console.log(emailPattern.test('invalid-email')); // false
例2: 電話番号の検索
[編集]const phonePattern = /^\d{3}-\d{3}-\d{4}$/; console.log(phonePattern.test('123-456-7890')); // true console.log(phonePattern.test('123-4567')); // false
例3: URLの検索
[編集]const urlPattern = /^(https?:\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/; console.log(urlPattern.test('https://example.com')); // true console.log(urlPattern.test('ftp://example.com')); // false
パターンの構成要素
[編集]正規表現のパターンは、以下のような構成要素から成り立ちます。
- Disjunction (選択):
|
を使用して、複数のパターンのいずれかにマッチすることを指定します。const pattern = /cat|dog/; console.log(pattern.test('cat')); // true console.log(pattern.test('dog')); // true console.log(pattern.test('bird')); // false
- Alternative (連続): 複数のパターンを連続して指定します。
const pattern = /abc/; console.log(pattern.test('abc')); // true console.log(pattern.test('ab')); // false
- Term (項): 単一のパターン要素を表します。例えば、
a
や\d
など。 - Assertion (アサーション): 文字列の特定の位置にマッチするパターンです。例えば、
^
(先頭) や$
(末尾) など。const pattern = /^Hello/; console.log(pattern.test('Hello World')); // true console.log(pattern.test('World Hello')); // false
- Quantifier (量指定子): 直前のパターンの繰り返し回数を指定します。例えば、
*
(0回以上) や+
(1回以上) など。const pattern = /a+/; console.log(pattern.test('aa')); // true console.log(pattern.test('')); // false
- Atom (原子): パターンの最小単位です。例えば、リテラル文字やエスケープシーケンスなど。
const pattern = /\d/; console.log(pattern.test('1')); // true console.log(pattern.test('a')); // false
Unicode モード
[編集]正規表現は、Unicode モードで動作することができます。Unicode モードでは、Unicode 文字を正しく扱うことができます。例えば、\p{Script=Hiragana}
はひらがなにマッチします。
const unicodePattern = /\p{Script=Hiragana}/u; console.log(unicodePattern.test('あ')); // true console.log(unicodePattern.test('a')); // false
まとめ
[編集]正規表現のパターンは、文字列の検索や置換を行うための強力なツールです。基本的な構文から、Unicode モードまで、さまざまな機能を活用することで、複雑な文字列パターンも簡単に表現できます。正規表現をマスターすることで、文字列処理の効率が大幅に向上します。
下位階層のページ
[編集]脚註
[編集]