2012-01-12 3 views
0

私はRegexrでこれをテストしてみたし、それが動作しますが、AS3で動作していないよう:空の文字列の正規表現が機能しないのはなぜですか?

var emptyResult:* = new RegExp("^\s*$", "gi").exec(myField.text); 

または

var emptyResult:* = /^\s*$/gi.exec(myField.text); 

私は、フィールド内のテキストを持っているかどうかは関係ありませんが、 、空白または非空白の場合、emptyResultは常にnullです。私はgとiのタグを付けて試してみましたが、何も動かないようです。

誰でもこの理由を知っていますか?

答えて

3
  1. あなたは「I」フラグを必要としない - それは、ラテン語のアルファベットの文字にのみ適用され、「大文字小文字を無視」の略です - あなたがそれらを使用していません。最初の例で

  2. は、あなたがそれ以外の場合は、それが以下の文字「s」をエスケープすることを意図したかのように扱われます、バックスラッシュをエスケープする必要があります。

  3. 文字列全体をテストしようとしているので、 'g'フラグは必要ありません。その場合、行と文字列は同じものです。\sは、 $の前に)。

  4. しかし、「i」フラグを外して2番目の正規表現を使用すると、予想される結果が得られます。つまり、テストされた文字列の全文が空白、表、改行その文字列全体が返されます。例えば

trace(/^\s*$/.exec(" \t\r\n")[0].length); // 4 
+0

感謝。それはあなたのポイント#2と私が間違った方法でチェックを行っていたという事実( 'emptyResult!= null'ではなく' emptyResult == null')の組み合わせであることが判明しました。おっと! – jowie

関連する問題