2010-12-21 4 views
3

나는이 문제를 혼자서 해결할 수 있었으면 좋겠다. 그러나 정규 표현식을 결코 이해하지 못했다. 그들은 너무 강력 해 보입니다. 나는 javascript reg ex를 배우기에 가장 좋은 리소스가 어디에 있는지 물어보고 싶었지만, 주관적이었고 내 질문을 원하지 않았다. 웹 양식에 텍스트 상자가 있는데 그 값이 1 & 999999 사이의 정수 여야합니다. 이미 jquery 숫자 플러그 인을 사용하여 숫자 만 허용하고 다른 모든 키 입력은 거부되며 onBlur 구현이 있습니다. 일부 정규식이 일치하지 않는 경우, 콜백 호출 할 것이다 ...이자바 스크립트는 1에서 999999 사이의 정수가 필요합니까?

$.fn.numeric.blur = function() 
{ 
var decimal = $.data(this, "numeric.decimal"); 
var callback = $.data(this, "numeric.callback"); 
var val = $(this).val(); 
if(val != "") 
{ 
    var re = new RegExp("^\\d+$|\\d*" + decimal + "\\d+"); 
    if(!re.exec(val)) 
    { 
     callback.apply(this); 
    } 
} 
} 

은 내가 발 1과 999999 사이의 유효한 정수 보장하기 위해 그 정규식을 수정할 수 있습니다 ... 그 코드인가? 어떤 도움을 주시면 감사하겠습니다. 또한 분명히 나 자신에 의해 이것을하고 싶습니다, 자바 스크립트 정규식을 배우는 쉬운 방법은 무엇입니까? 정말 고마워. 모두 훌륭한 휴가를 보내십시오!

건배, 샌디에고이이 일을 할 것

+6

정말 정수를 검증하기위한 적합한 도구 일반 식입니다 아마할까요? – Christian

+3

'>'또는'< '비교를 할 수없는 이유가 있습니까? ROUND()가 반올림되지 않은 값과 같은지 확인하십시오. –

+0

@Raj 더 많은 제안이있었습니다. (실제로 필요없는 정규식을 사용해야하는 이유는 무엇입니까?) :-) –

답변

7

이 특별한 경우 정규식을 사용하지 않는 것이 좋습니다. 그냥 일반 좋은 오래된 자바 스크립트 사용

if(typeof decimal === 'number' && (decimal > 1 && decimal < 999999)) { 
    // here we go 
} 

은 숫자로 값을 캐스팅하려면 + 연산자를 사용할 수 있습니다 또는 .parseInt()

var val = +$.trim($(this).val()); 
if(val && (decimal >= 1 && decimal <= 999999)) { 
} 
+0

(십진수 = 1 && 십진수 = 999999)? :-) –

+0

OP는 "1에서 999999 사이"라고 말합니다. – jAndy

+0

+1은 비 정규식 솔루션을지지합니다. 나는 또한'parseInt' 또는'cast'와 같은 다른 캐스트도 정수 값 이상을 나타낼 수 있습니다. –

5

에서
가 ~ CK :

[0-9]{1,6} 

내가 대신하지만 정수 구문 분석/검증 기능을 사용하는 것이 좋습니다 것입니다.

+0

하지만 '0'과도 일치합니다. –

2

이 정규식 문제가되지 않습니다. JQuery .validate 함수를 살펴보십시오. 필드 요구 사항을 범위로 설정할 수 있습니다.

관련 문제