2011-01-25 2 views
0

텍스트 상자에서 크리켓 오버의 유효성을 검사하기 위해 정규 표현식을 사용해야하는 이유를 알려주십시오. 는 5.1, 5.2,5.3,5.4,5.5 수 있지만이 0.5보다 큰 분수 값을 포함하지 않아야처럼, 또한 값은 숫자이어야한다 전용 (부동 소수점과 int)를크리켓 오버에 대한 정규 표현식을 만드는 방법

감사

답변

1

당신이 사용해야합니다 : 당신이 대신 0.2.2 같은 분수를 원하는 경우

^[0-9]+(\.(50*|[0-4][0-9]*))?$ 

를, 이것을 사용 : 0

^[0-9]*(\.(50*|[0-4][0-9]*))?$ 
는 설명 : 예를 들어 /[0-9]+(\.[0-5])?/.test("0.8") 사실 산출 때문에

^    beginning of the string 
[0-9]*   repeat 0 or more digits 
(
    \.    match the fraction point 
    (
    50*   match .5, or .5000000 (any number of zeros) 
    |   or 
    [0-4][0-9]* anything smaller than .5 
) 
)?    anything in this parenthesis is optional, for integer numbers 
$    end of the string 

버전, [0-9]+(\.[0-5])?는, 불행히도 작동하지 않습니다.

+0

빠른 답장을 보내 주셔서 감사합니다. 그것의 일하는 벌금 그러나 직면 한 문제점. "66.555"와 같은 가치를 입력 할 수있게 해줍니다. 우리가 알고 있듯이 초과는 분수 값으로 1 값을 포함해야합니다. –

+0

나는 당신의 표정을 바꿔서 "[0-9] + (\. [0-5])?"라는 것을 발견했습니다. 잘 작동합니다. 올바른지 확인하십시오 .. thanks –

+0

@Rajesh Rolen- DotNet Developer가 지금 업데이트되었습니다. 좀 더 복잡하지만'0.5000000','0.4999','.5','5' 등 거의 모든 것에서 작동합니다. –

2

이 시도 :

<script type="text/javascript"> 
var testString = '5.4'; 
var regExp = /^\d+(\.[1-5])?$/; 
if(regExp.test(testString)) 
{ 
// Do Something 
} 
</script> 
+1

테스트에서 일치하는 항목이 50 개 이상인 경우 (웃음) –

+0

게시물을 업데이트했습니다. OP가 일치하는 형식 (하루, 테스트, 20-20)을 지정할 수있는 경우 동일한 형식으로 다시 추가 할 수 있습니다. – Chandu

+0

salman 진짜 영웅 .. –

0
<script type="text/javascript"> 
var pattern = /^\d+(\.[0-5])?$/; 
var overs = [ 
'0', 
'0.0', 
'1.1', 
'1.2', 
'1.5', 
'1.6', 
'2', 
'2.0', 
'2.10', 
'50', 
'50.1', 
'100' 
]; 
for (var i = 0; i < overs.length; i++) { 
    var over = overs[i]; 
    console.log(over + (pattern.test(over) ? ' is valid' : ' is in-valid')); 
} 
</script> 
+0

'2.10 is in valid' –

+0

예. 그리고 그건*. 참조 : http://en.wikipedia.org/wiki/Over_%28cricket%29 –

관련 문제