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,我想他們有一個全球性的功能。 )) –