Actionscript 3 では、正規表現を使用してユーザー入力をテストしようとしています。次のコードは、文字列をテストします。
private function ValidateModifier(tst:String):Boolean
{
var validDieRoll:RegExp = /([+-]?)([0-9]+)d([0-9]+)/;
return ( validDieRoll.test( tst ) );
}
文字列シーケンスの先頭に + または - 記号を許可することになっていますが、1 つだけです。ただし、 ? を無視しているようです。任意の数の + または - 記号を受け入れる量指定子。
私はこの値の配列でテストしています:
tmpArray.push("3d6");
tmpArray.push("d36");
tmpArray.push("-3d6");
tmpArray.push("+d3");
tmpArray.push("++--+3d6");
tmpArray.push("d3");
tmpArray.push("3d");
次の結果では、5 番目の項目が false になっているはずです。ここで何が欠けていますか?
3d6 = true
d36 = false
-3d6 = true
+d3 = false
++--+3d6 = true
d3 = false
3d = false
これらの正規表現の順列を試してみましたが、まったく同じ結果が得られました。
var validDieRoll:RegExp = /([+-]{0,1})([0-9]+)d([0-9]+)/;
var validDieRoll:RegExp = /([+-]{0,1}?)([0-9]+)d([0-9]+)/;