在 Actionscript 3 中,我尝试使用正则表达式来测试用户输入。以下代码测试一个字符串:
private function ValidateModifier(tst:String):Boolean
{
var validDieRoll:RegExp = /([+-]?)([0-9]+)d([0-9]+)/;
return ( validDieRoll.test( tst ) );
}
它应该允许在字符串序列的开头使用 + 或 - 符号,但只有一个。但是,它似乎忽略了 ? 量词接受任意数量的 + 或 - 符号。
我正在使用这个值数组进行测试:
tmpArray.push("3d6");
tmpArray.push("d36");
tmpArray.push("-3d6");
tmpArray.push("+d3");
tmpArray.push("++--+3d6");
tmpArray.push("d3");
tmpArray.push("3d");
在以下结果中,第五项应该是错误的。我在这里想念什么?
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]+)/;