2015-01-28 4 views
0

Livecycle에서 입력 한 숫자가 0에서 10 사이이고 유효 기간이 25 분입니다. 이 post의 도움으로 다음을 작성했습니다.Livecycle RegExp - 십진수로 인한 문제

if (!xfa.event.newText.match(/^(([10]))$|^((([0-9]))$|^((([0-9]))\.?((25)|(50)|(5)|(75)|(0)|(00))))$/)) 
    { 
     xfa.event.change = ""; 
    }; 

문제는 기간이 수락되지 않습니다. 나는 괄호 안에 \.을 감싸는 것을 시도했다. 그러나 그것도 작동하지 않았다. 이 필드는 특수 서식 및 변경 이벤트의 코드가없는 텍스트 필드입니다.

답변

1

Yikes, 그것은 복잡한 정규식입니다. 이 많이 단순화 할 수 있습니다

/^(?:10|[0-9](?:\.(?:[27]?5)?0*)?)$/ 

설명 :

^    # Start of string 
(?:   # Start of group: 
10   # Either match 10 
|    # or 
[0-9]  # Match 0-9 
(?:   # optionally followed by this group: 
    \.   # a dot 
    (?:[27]?5)? # either 25, 75 or 5 (also optional) 
    0*   # followed by optional zeroes 
)?   # As said before, make the group optional 
)    # End of outer group 
$    # End of string 

테스트 live on regex101.com을.

+0

설명을 포함 해 주셔서 감사합니다! 거의 작동하며'2' 또는'7'을 수락하지 않습니다. – turkaffe

+0

@ silviak : 무슨 뜻인지 모르겠다. 그것은'25' 또는'75'를 받아 들여야하고'2' 나'7'을 받아 들여서는 안됩니다. 맞습니까? regex101에서 실시간 미리보기를 추가했습니다. –

+0

'.25' 또는'.75'를 테스트 할 때'.25'를 타이핑하면'2'를 받아들이지 않고'5'를 건너 뜁니다. 나는 그것이 변화 이벤트에 있고 전체 문자열을 찾고 있기 때문에 어쩌면 생각하고 있나? – turkaffe