0
在Actionscript 3中,我试图使用正则表达式来测试用户输入。下面的代码测试的字符串:Actionscript 3 RegExp量词似乎不能正常工作?
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]+)/;
瞧!问题解决了。奇怪的是,原始版本在PHP脚本中运行得非常好。 –
它不应该给你正确的结果。但那是PHP,我想他们有一个全球性的功能。 )) –