特集PC技術

コアJavaScript(ECMAScript)の図書室

 

23冊目 【JavaScript】[ECMAScript] 正規表現

ここでは、正規表現について説明をします。

目次

[1] 正規表現の基礎

あいまいな文字列パターンを表現できる機能です。
正規表現の基本的な構文を説明します。
正規表現を利用する際にはRegExpオブジェクトを生成する必要があります。
RegExpオブジェクトを生成する方法は2種類あります。
両者には違いがあるので注意しましょう。

正規表現リテラルを使う場合

「/」をエスケープ処理をして定義する必要があります。

RexExpオブジェクト生成構文を使う場合

「¥」をエスケープ処理をして定義する必要があります。

正規表現を行ってみる

実際に正規表現を実行してみます。
主な実行方法として2種類あります。

文字列データ型.match(正規表現);
正規表現インスタンス.exec(正規表現);

var num = "10x200";
var reg = /¥d*/g;

document.writeln(num.match(/¥d*/g));
document.writeln(reg.exec("10x200"));

「正規表現」の記述方法には様々なルールがあるので、とりあえず、形式を抑えます。
「//」で囲って指定します。上記のプログラムは数字データがあるかどうか調べます。
2つは同じようなプログラムですが、詳細は違います。後述します。
「/g」は正規表現のオプション機能です。

[2] 文字関係の正規表現

正規表現で文字を探すための記述方法です。
該当するデータを発見できなかったときは「null」を返します。

記述方法 意味
. 任意の1文字
¥w 大文字、小文字の英字、数字、アンダースコア
¥W 文字以外
¥d 数字に一致
¥D 数字以外
¥s 空白文字に一致
¥S 空白文字以外

[3] 繰り返しの正規表現

正規表現で繰り返し該当するデータを探すときに使用できます。

記述方法 意味
{n,m} 直前の項目をnからm回まで
{n,} 直前の項目をn回以上繰り返す
{n} 直前の項目をn回繰り返す
? 直前の項目を0回または1回
+ 直前の項目を1回以上繰り返す
* 直前の項目を0回以上繰り返す

[4] 正規表現のオプション

正規表現のオプションについて説明をします。

記述方法 意味
g 文字列全体とマッチング
i 大文字か小文字を区別するかどうか
m 複数行対応するか

[5] その他の正規表現

上記以外の正規表現について説明をします。

記述方法 意味
¥n 改行
¥r 復帰
¥t タブ文字
¥s 空白文字
¥S 空白文字以外
¥~ ~以外

[6] 複雑な正規表現

構文を説明しましたがいまいち使い方がわからないと思います。
ここでは、実際に使用されるような正規表現を書いておこうと思います。
実際の開発に役に立てば幸いです。

URLを表す正規表現パターン
// 正規表現リテラル
var pattern = /http(s)?:¥/¥/([¥w-]+¥.)+[¥w-]+(¥/[\w- .¥/?&&=]*)?/gi;

// RegExpコンストラクタ
var pattern = new RegExp('http(s)?://([¥¥w-]+¥¥.)+[¥¥w-]+(/[¥¥w- ./?%&=]*)?','gi');

[7] 更新履歴

日付 詳細
2011/07/29 コンテンツ公開

コメントの投稿


画像の中に見える文字を入力してください。

トラックバックURL

http://www.isl.ne.jp/cgi-bin/mt/mt-tb.cgi/1689

サイト内検索

コアJavaScript(ECMAScript)の図書室

twitterTwitter

最新ブログ記事

2015年06月13日

JavaScriptの情報室

4冊目 ハイブリッドアプリが作れる。tabris.js

2014年10月16日

C++言語学習録

第3回 ファイルを分割してみよう

2014年10月09日

C++言語学習録

第2回 オブジェクト指向の復習

2014年10月02日

C++言語学習録

第1回 C++の開発環境を整える

2014年09月25日

Swiftを試してみようなう。

第4回 Swiftでクラスを使うなう。

ISL 情報戦略研究所

pagetopこのページの先頭へ戻る