パッケージトップレベル
クラスpublic dynamic class RegExp
継承RegExp Inheritance Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

RegExp クラスを使用すると、正規表現を処理することができます。正規表現とは、ストリング内で検索を実行したり、ストリング内のテキストを置き換えたりする場合に使用できるパターンです。

new RegExp() コンストラクタを使用するか、RegExp リテラルを変数に割り当てることによって、新しい RegExp オブジェクトを作成することができます。

 var pattern1:RegExp = new RegExp("test-\\d", "i");
     var pattern2:RegExp = /test-\d/i;
     

詳細については、『ActionScript 3.0 のプログラミング』の「正規表現の使用」を参照してください。

例を表示

関連項目

String.match()
String.replace()
String.search()
Regular expression syntax


パブリックプロパティ
 プロパティ定義元
 Inheritedconstructor : Object
指定されたオブジェクトインスタンスのクラスオブジェクトまたはコンストラクタ関数への参照です。
Object
  dotall : Boolean
[読み取り専用] 正規表現パターン内のドット文字(.)と改行文字を一致させるかどうかを指定します。
RegExp
  extended : Boolean
[読み取り専用] 正規表現に拡張モードを使用するかどうかを指定します。
RegExp
  global : Boolean
[読み取り専用] 正規表現にグローバル照合を使用するかどうかを指定します。
RegExp
  ignoreCase : Boolean
[読み取り専用] 正規表現で大文字と小文字の区別を無視するかどうかを指定します。
RegExp
  lastIndex : Number
ストリング内で次回の検索を開始するインデックス位置を指定します。
RegExp
  multiline : Boolean
[読み取り専用] m(multiline)フラグを設定するかどうかを指定します。
RegExp
 Inheritedprototype : Object
[静的] クラスまたは関数オブジェクトのプロトタイプオブジェクトへの参照です。
Object
  source : String
[読み取り専用] 正規表現のパターン部分を指定します。
RegExp
パブリックメソッド
 メソッド定義元
  
RegExp(re:String, flags:String)
2 つのストリングから正規表現を作成することができます。
RegExp
  
指定されたストリング str について、正規表現を検索します。
RegExp
 Inherited
オブジェクトに指定されたプロパティが定義されているかどうかを示します。
Object
 Inherited
Object クラスのインスタンスが、パラメータとして指定されたオブジェクトのプロトタイプチェーン内にあるかどうかを示します。
Object
 Inherited
指定されたプロパティが存在し、列挙できるかどうかを示します。
Object
 Inherited
ループ処理に対するダイナミックプロパティの可用性を設定します。
Object
  
指定されたストリング str 内に正規表現と一致するサブストリングがあるかどうかをテストします。
RegExp
 Inherited
指定されたオブジェクトのストリング表現を返します。
Object
 Inherited
指定されたオブジェクトのプリミティブな値を返します。
Object
プロパティの詳細
dotallプロパティ
dotall:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

正規表現パターン内のドット文字(.)と改行文字を一致させるかどうかを指定します。 正規表現の作成時に s フラグを使用して、dotall = true を設定します。



実装
    public function get dotall():Boolean

関連項目



次の例は、正規表現に sdotall)フラグを設定した場合の効果を示しています。
var str:String = "<p>Hello\n"
        + "again</p>"
        + "<p>Hello</p>";

var pattern:RegExp = /<p>.*?<\/p>/;
trace(pattern.dotall) // false
trace(pattern.exec(str)); // <p>Hello</p>

pattern = /<p>.*?<\/p>/s;
trace(pattern.dotall) // true
trace(pattern.exec(str)); 
extendedプロパティ 
extended:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

正規表現に拡張モードを使用するかどうかを指定します。RegExp オブジェクトが拡張モードの場合、コンストラクタストリング内の空白文字は無視されます。これはコンストラクタの可読性を高めることを目的とします。

正規表現の作成時に x フラグを使用して、extended = true を設定します。



実装
    public function get extended():Boolean

関連項目



次の例は、同じ正規表現をさまざまな方法で作成する方法を示しています。それぞれの方法で、xxx-xxx-xxxx、(xxx) xxx-xxxx、または (xxx) xxx-xxxx のいずれかの電話番号パターンに一致する正規表現を作成します。2 番目の正規表現では、x フラグが使用されているため、ストリング内の空白文字は無視されます。
var rePhonePattern1:RegExp = /\d{3}-\d{3}-\d{4}|\(\d{3}\)\s?\d{3}-\d{4}/; 
var str:String = "The phone number is (415)555-1212.";

trace(rePhonePattern1.extended) // false
trace(rePhonePattern1.exec(str)); // (415)555-1212

var rePhonePattern2:RegExp = / \d{3}-\d{3}-\d{4}  |   \( \d{3} \) \ ? \d{3}-\d{4}  /x; 
trace(rePhonePattern2.extended) // true
trace(rePhonePattern2.exec(str)); // (415)555-1212
globalプロパティ 
global:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

正規表現にグローバル照合を使用するかどうかを指定します。global == true の場合、一致するものが 1 つ見つかった後に lastIndex プロパティが設定されます。次回、照合が要求されたときには、正規表現エンジンはストリングの lastIndex の位置から照合を開始します。正規表現の作成時に g フラグを使用して、globaltrue に設定します



実装
    public function get global():Boolean

関連項目



次の例は、gglobal)フラグを exec() メソッドに設定した場合の効果を示しています。
var pattern:RegExp = /foo\d/; 
var str:String = "foo1 foo2";
trace(pattern.global); // false
trace(pattern.exec(str)); // foo1
trace(pattern.lastIndex); // 0
trace(pattern.exec(str)); // foo1

pattern = /foo\d/g;
trace(pattern.global); // true
trace(pattern.exec(str)); // foo1
trace(pattern.lastIndex); // 4
trace(pattern.exec(str)); // foo2
ignoreCaseプロパティ 
ignoreCase:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

正規表現で大文字と小文字の区別を無視するかどうかを指定します。正規表現の作成時に i フラグを使用して、ignoreCase = true を設定します。



実装
    public function get ignoreCase():Boolean

関連項目



次の例は、iignoreCase)フラグを設定した場合の効果について示しています。
var pattern:RegExp = /bob/; 
var str:String = "Bob bob";
trace(pattern.ignoreCase); // false
trace(pattern.exec(str)); // bob

pattern = /bob/i;
trace(pattern.ignoreCase); // true
trace(pattern.exec(str)); // Bob
lastIndexプロパティ 
lastIndex:Number

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

ストリング内で次回の検索を開始するインデックス位置を指定します。このプロパティは、RegExp クラスの exec() メソッドと test() メソッドに影響します。ただし、String クラスの match() メソッド、replace() メソッドおよび search() メソッドは、lastIndex プロパティを無視し、すべての検索をストリングの先頭から開始します。

exec() メソッドまたは test() メソッドで一致するものが見つかり、正規表現で gglobal)フラグが true に設定されている場合、メソッドは自動的に lastIndex プロパティを、最後に一致したサブストリング内の最後の文字のにある文字のインデックス位置に設定します。gglobal)フラグが false に設定されている場合、メソッドは lastIndex プロパティを設定しません。

lastIndex プロパティを設定することで、ストリング内で正規表現による検索を開始する位置を調整できます。



実装
    public function get lastIndex():Number
    public function set lastIndex(value:Number):void

関連項目



次の例は、lastIndex プロパティを設定した場合の効果を示しています。また、exec() メソッドを gglobal)フラグが設定された正規表現で呼び出した後に、そのプロパティがどのように更新されるかを示しています。
var pattern:RegExp = /\w\d/g; 
var str:String = "a1 b2 c3 d4";
pattern.lastIndex = 2; 
trace(pattern.exec(str)); // b2
trace(pattern.lastIndex); // 5
trace(pattern.exec(str)); // c3
trace(pattern.lastIndex); // 8
trace(pattern.exec(str)); // d4
trace(pattern.lastIndex); // 11
trace(pattern.exec(str)); // null
multilineプロパティ 
multiline:Boolean  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

mmultiline)フラグを設定するかどうかを指定します。設定する場合、正規表現内のキャレット(^)とドル記号($)は改行文字の前と後に一致します。正規表現の作成時に m フラグを使用して、multiline = true を設定します。



実装
    public function get multiline():Boolean

関連項目



次の例は、mmultiline)フラグを設定した場合の効果について示しています。
var pattern:RegExp = /^bob/; 
var str:String = "foo\n"
                + "bob";
trace(pattern.multiline); // false
trace(pattern.exec(str)); // null

pattern = /^bob/m;
trace(pattern.multiline); // true
trace(pattern.exec(str)); // bob
sourceプロパティ 
source:String  [読み取り専用]

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

正規表現のパターン部分を指定します。



実装
    public function get source():String

関連項目



次のコードは、2 つの正規表現について source パラメータを出力します。
var re1:RegExp = /aabb/gi;
trace (re1.source); // aabb

var re2:RegExp = new RegExp("x+y*", "i");
trace(re2.source); // x+y*
コンストラクタの詳細
RegExp()コンストラクタ
public function RegExp(re:String, flags:String)

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

2 つのストリングから正規表現を作成することができます。1 つのストリングは正規表現のパターンを定義し、もう 1 つのストリングは正規表現で使用されるフラグを定義します。

パラメータ
re:String — 正規表現のパターンです。コンストラクタストリングとも言います。これは正規表現のメインとなる部分です。つまり、"/" で囲まれる部分です。

メモ :

  • 開始と末尾の "/" 文字を含めないでください。この文字は、コンストラクタを使用しないで正規表現リテラルを定義する場合にのみ使用します。例えば、次の 2 つの正規表現は同等です。
     var re1:RegExp = new RegExp("bob", "i"); 
            var re2:RegExp = /bob/i;
  • RegExp() コンストラクタメソッドで定義された正規表現の中で、円記号(\)から始まるメタシーケンス(任意の数字を意味する \d など)を使用するには、円記号を二重に入力する必要があります。例えば、次の 2 つの正規表現は同等です。
     var re1:RegExp = new RegExp("\\d+", ""); 
            var re2:RegExp = /\d/;

    最初の表現では、円記号を二重に入力する必要があります。これは、RegExp() コンストラクタメソッドの最初のパラメータがストリングであり、ストリングリテラルの中では、単一の円記号として認識されるためには二重に円記号を入力する必要があるためです。

 
flags:String — 正規表現のモディファイアです。これには次のものが含まれます。
  • g— String クラスの replace() メソッドを使用する場合、この修飾子を指定して、最初に一致するストリングのみでなく、一致するすべてのストリングを置き換えます。このモディファイアは、RegExp インスタンスの global プロパティに対応します。
  • i — 正規表現を大文字と小文字の区別なしで評価します。このモディファイアは、RegExp インスタンスの ignoreCase プロパティに対応します。
  • s— ドット (.) 文字は改行文字に一致します。この修飾子は、RegExp インスタンスの dotall プロパティに対応します。
  • m — キャレット(^)文字とドル記号($)は、改行文字の前後に一致します。このモディファイアは、RegExp インスタンスの multiline プロパティに対応します。
  • xre ストリング内の空白文字を無視します。そのため、可読性の高いコンストラクタを作成できます。このモディファイアは、RegExp インスタンスの extended プロパティに対応します。

flags ストリング内の他の文字は、すべて無視されます。

関連項目

メソッドの詳細
exec()メソッド
AS3 function exec(str:String):Object

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

指定されたストリング str について、正規表現を検索します。

正規表現に gglobal)フラグが設定されていない場合、ストリングの先頭(インデックス位置 0)から検索が開始され、正規表現の lastIndex プロパティは無視されます。

正規表現に gglobal)フラグが設定されている場合、正規表現の lastIndex プロパティで指定されたインデックス位置から検索が開始されます。検索でサブストリングが一致すると、lastIndex プロパティは一致したサブストリングの最後の位置に変更されます。

パラメータ

str:String — 検索するストリングです。

戻り値
Object — 一致が見つからない場合は null、それ以外の場合は、次に示すプロパティを持つオブジェクトを返します。
  • エレメント 0 に完全一致のサブストリングを含み、他のエレメント(1 ~ n)に正規表現内の括弧指定されたグループと一致するサブストリングを含む配列
  • index — ストリング内で一致するサブストリングの文字の位置
  • input — ストリング (str)

関連項目



正規表現に gglobal)フラグを設定しない場合、exec() を使用して、ストリング内で最初に一致するものを検索することができます。
         var myPattern:RegExp = /(\w*)sh(\w*)/ig;   
         var str:String = "She sells seashells by the seashore";
         var result:Object = myPattern.exec(str);
         trace(result);
         

result オブジェクトは次のように設定されます。

  • result[0]"She" に設定されます (完全一致)。
  • result[1]は空のストリングに設定されます (括弧指定されたグループの最初の一致)。
  • result[2]"e" に設定されます (括弧指定されたグループの 2 番目の一致)。
  • result.indexは 0 に設定されます。
  • result.inputは入力ストリング "She sells seashells by the seashore" に設定されます。

次の例では、正規表現に gglobal)フラグが設定されているため、exec() を繰り返し使用して、一致するものを複数検索することができます。

         var myPattern:RegExp = /(\w*)sh(\w*)/ig;  
         var str:String = "She sells seashells by the seashore";
         var result:Object = myPattern.exec(str);
                  while (result != null) {
             trace ( result.index, "\t", result);
             result = myPattern.exec(str);
         }
         

このコードの出力は、次のようになります。


            0      She,,e
            10     seashells,sea,ells
            27     seashore,sea,ore
         
test()メソッド 
AS3 function test(str:String):Boolean

言語バージョン: ActionScript 3.0
ランタイムバージョン: AIR 1.0 Flash Player 9

指定されたストリング str 内に正規表現と一致するサブストリングがあるかどうかをテストします。

正規表現に gglobal)フラグが設定されていない場合、ストリングの先頭(インデックス位置 0)から検索が開始され、正規表現の lastIndex プロパティは無視されます。

正規表現に gglobal)フラグが設定されている場合、正規表現の lastIndex プロパティで指定されたインデックス位置から検索が開始されます。検索でサブストリングが一致すると、lastIndex プロパティは一致したサブストリングの最後の位置に変更されます。

パラメータ

str:String — テストするストリングです。

戻り値
Boolean — 一致が存在する場合は true、それ以外の場合は false を返します。

関連項目




次の例では、test() メソッドを、gglobal)フラグが設定された正規表現で使用する方法を示しています。
var re1:RegExp = /\w/g;
var str:String = "a b c";
trace (re1.lastIndex); // 0
trace (re1.test(str)); // true
trace (re1.lastIndex); // 1
trace (re1.test(str)); // true
trace (re1.lastIndex); // 3
trace (re1.test(str)); // true
trace (re1.lastIndex); // 5
trace (re1.test(str)); // false
例の使用法
RegExpExample.as

次の例は、正規表現を使用してストリングを解析し、渡されたストリングに基づいて新しいストリングまたはブール値を返す方法を示しています。渡されたストリング内で、informalizeGreeting() メソッドは、大文字小文字に関係なく Hello という語が見つかると、この語を単純に Hi に置き換えます。また、ストリング内の名前から姓を削除します。ただし、指定されたパターンに名前が一致する場合です。validateEmail() メソッドと validatePhoneNumber() メソッドは、渡されたストリングのパターンが有効な電子メールアドレスまたは特定の電話番号のパターンと一致するかどうかをチェックし、その結果に従ってブール値を返します。
package {
    import flash.display.Sprite;

    public class RegExpExample extends Sprite {        
        public function RegExpExample() {            
            var formalGreeting:String = "Hello, John Smith.";
            trace(informalizeGreeting(formalGreeting));    // Hi, John.

            var validEmail:String = "name@domain.com";
            trace(validateEmail(validEmail));        // true
            
            var invalidEmail:String = "foo";
            trace(validateEmail(invalidEmail));  // false
            
            var validPhoneNumber:String = "415-555-1212";
            trace(validatePhoneNumber(validPhoneNumber));    // true
            
            var invalidPhoneNumber:String = "312-867-530999";
            trace(validatePhoneNumber(invalidPhoneNumber));  // false
        }
        private function informalizeGreeting(str:String):String {
            var pattern:RegExp = new RegExp("hello, (\\w+) \\w+", "i");
            return str.replace(pattern, "Hi, $1");
        }
        private function validateEmail(str:String):Boolean {
            var pattern:RegExp = /(\w|[_.\-])+@((\w|-)+\.)+\w{2,4}+/;
            var result:Object = pattern.exec(str);
            if(result == null) {
                return false;
            }
            return true;
        }
        private function validatePhoneNumber(str:String):Boolean {
            var pattern:RegExp = /^\d{3}-\d{3}-\d{4}$/;
            var result:Object = pattern.exec(str);
            if(result == null) {
                return false;
            }
            return true;
        }
    }
}




 

 

このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート

現在のページ: http://livedocs.adobe.com/flex/3_jp/langref/RegExp.html