2012-05-04 3 views
0

Actionscript 3에서 정규 표현식을 사용하여 사용자 입력을 테스트하려고합니다. 다음 코드는 문자열을 테스트합니다.Actionscript 3 RegExp 한정 기호가 제대로 작동하지 않는 것 같습니까?

문자열 시퀀스의 시작 부분에는 + 또는 - 기호를 사용할 수 있습니다. 단 하나만 허용됩니다. 그러나, 그것을 무시하는 것 같습니다? 양수인은 + 또는 - 부호의 수를 허용합니다.

나는 값이 배열로 테스트 해요 : 다음 결과에서

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]+)/; 

답변

1

당신은 +/- 문자열 시퀀스의 시작에 인에 대해 말을하지 않았다. 따라서 원래 패턴은 지정한 내용을 포함하기 때문에 "++ - + 3d6"과 일치합니다.

패턴 시작 부분에 ^을 추가하고 끝에 $을 추가하십시오.

var validDieRoll:RegExp = /^([+-]?)(\d+)d(\d+)$/; 
+0

Voila! 문제 해결됨. 이상하게도 원본 버전은 PHP 스크립트에서 완벽하게 작동했습니다. –

+0

정확한 결과를 제공해서는 안됩니다. 그러나 그것은 PHP 다. 나는 세계적인 기능을 가지고 있다고 생각한다.)) –