正規表現を使いこなす

正規表現(Regular Expression)とは、AwkやPerlなどのUNIXの標準的なスクリプト言語で実装されている文字列表現方法のことです。 私もDOSの時代にAwkを使用していました。 データベースの特定データの抽出や置換に正規表現は無くてはならない道具でした。
JavaScriptでもバージョン1.2(IE4.X以降、NN4.X以降対応)から対応しているようです。ここでは、JavaScriptで正規表現の実験をしてみましょう。

以下に代表的な正規表現の表記法を示します。(右端の「※」文字のクリックで詳細説明を見ることができます。)

表現 意       味
\ 次に続く文字がメタ文字(*1参照)の場合、本来の文字であることを示す。
次に続く文字がメタ文字以外の場合、特殊な意味を持つ文字であることを示す。
行頭に一致する。 ^abcは、文字列abcが行頭であることを表す。
$ 行末に一致する。 abc$は、文字列abcが行末であることを表す。
a 文字 a に一致。(通常の検索文字列と同様)
. 任意の1文字に一致。(ピリオドです)
[abc] カッコ内のいずれか1文字(ここでは a、b、あるいは c )に一致。
* 直前文字の0回以上の繰り返しに一致。
+ 直前文字の1回以上の繰り返しに一致。({1,}と同じ)
? 直前文字の0回、あるいは1回に一致。
{n} 直前文字のn回に一致。
{n,} 直前文字のn回以上の繰り返しに一致。
{n,m} 直前文字のn回以上、m回以下の繰り返しに一致。
x|y 正規表現 x か、正規表現 y のどちらかに一致。
(x) 正規表現 x をグループ化。(*2参照)
x(?=y) 正規表現 x に一致した文字列が、正規表現 y に続くときのみ正規表現 x に一致。
x(?!y) 正規表現 x に一致した文字列が、正規表現 y に続かないときのみ正規表現 x に一致。
\b スペースなど、単語との境界に一致。 \B は単語との境界以外に一致。
\d 数字に一致。([0-9]と同じ) \D は数字以外に一致。
\s スペース、タブなどの空白文字に一致。(*3参照) \S は空白文字以外に一致。
\w 英単語に一致。([A-Za-z0-9_]と同じ) \W は英単語以外に一致。
*1
正規表現では [ ] { } ( ) \ | ^ $ . * + ? の文字は「メタ文字」と呼ばれ、特別の意味を持ちます。
これらを文字そのものとして指定する場合は \ を付けてエスケープしてください。
*2
複数のグループ化で一致した文字列は、その正規表現の中で \1, 2, 3 ... と記述することで、順次後方参照することができます。
またPerlでは、グループ化で一致した文字列を $1, 2, 3 ... のように表すことができ、置換文字列の中で元の文字列として指定できます。(JavaScriptでは RegExp.$1, 2, 3 ... とする)
*3
[\r\t\n\f\u00A0\u2028\u2029]と同じです。
\r や \n は制御文字を表し、\u.... はUnicodeの2バイト文字を表します。