2016-12-20 6 views
1

一致するものだけを返すメソッドはありますか、一致するものがない場合はnullがありますか?ActionScriptでRegExの一致または最初の変数マッチのみを返すメソッドがありますか?

脳凍結の可能性がありますが、一致するものを返すだけの方法はありますか?

私はちょうどそれ以外の最初の変数はnullを返したい場合たとえば、:

var value:String = "image/png".toLowerCase(); 
var result:String = value.find(/image/(png|jpg|jpeg|gif)/); 

if (result=="png") { 
    // do something 
} 

を私はreplaceexecmatchがあります知っていると、彼らはなどの配列を返すが、私はちょうどその方法を探しています最初の一致またはnullを返します。

このような機能がない場合は、あったと思います。どのように私はそこにしたいと思う神に。

答えて

2

具体的な方法はありません。最も近い方法はString.matchまたはRegExp.execです。正規表現にはグローバル修飾子がないため、ここではほとんど違いがありません。グローバル修飾子付きの正規表現を使用すると、RegExp.execを使用する以外に選択肢はありません。 /がでエスケープしなければならないことを

var pattern:RegExp = /image\/(png|jpg|jpeg|gif)/; 
var str:String = "image/png".toLowerCase(); 
var m:Array = pattern.exec(str); 
if (m != null) 
{ 
    if (m[1] == "png") { 
     // Do stuff 
    } 
} 

注:結果がnullあるかどうかを確認し、それがnullをないならば、それはpngであるかどうかを確認するために、グループ1の値を抽出することができますString.matchまたはRegExp.execを使用して

正規表現のリテラル。

また、パターンを(png|jpe?g|gif)に少し縮小することもできますが、内部的にはうまくいくものの、読みにくくなります。

+0

これは問題を解決しますが、 'exec'は私がやりたいことに最も近い機能だと言っていますか? –

+0

グループ1にアクセスするだけです。 'String.match'または' RegExp.exec'を使うと、正規表現にグローバル修飾子がないので、ここではほとんど違いがありません。グローバル修飾子で正規表現を使うと、 'RegExp.exec'を使う以外に選択肢はありません。 –