2010-02-14 3 views
1

사용자가 양식 입력란을 통해 상자의 크기를 입력 할 수 있도록하고 있습니다. 허용되는 값은 다음과 같습니다 정규식 사용과 관련된 자바 스크립트 기능

  • 는 픽셀 또는 %로 끝나야합니다

    1. 양의 정수

    이 샘플 유효 숫자가 300 픽셀 또는 70 % 또한

    이다, 나는 몇 가지 추가 검증을 배치 할 논리 :

    입력 된 값이 백분율로 표시되는 경우 숫자는 0> x < = 100

    범위에 있어야합니다.

    입력 한 숫자가 px 인 경우 하드 코딩 된 최소 및 최대 값을 확인할 수 있어야합니다.

    내가 수년 동안 사용하지 않았기 때문에 정규식 지식이 거의 없다.

    나는이 같은 도우미 함수의 집합을 작성하는 생각입니다 :

    // returns true if value ends in px or % [with no spaces], false otherwise 
    function is_scale_valid(value){ 
    } 
    
    //returns 'px', '%' or undefined 
    function get_scale_type(value){ 
    } 
    
    // called after is_scale_valid, to ensure we are dealing with 
    // a +ve integer that falls in desired range. This function 
    // strips away the 'scale' part of the value and only looks 
    // at the number 
    function is_valid_number(value, scaletype, valid_min, valid_max){ 
    } 
    

    이 사람이 날이 도우미 기능을 작성 도와 드릴까요?

  • 답변

    2

    당신이 원하는 정규 표현식은 다음과 같습니다

    var r = new RegExp("^\\s*(\\d+(?:\\.\\d+)?)\\s*(px|%)?\\s*$"); 
    

    이 표현은 의미

    • 선도 및 공백 (\s)를 후행 허용;
    • 숫자는 하나 이상의 숫자와 그 뒤에 선택적으로 마침표와 하나 이상의 숫자가옵니다.
    • 단위는 "px", "%"또는 생략 할 수 있습니다.

    수동으로 입력 한 번호를 확인해야합니다.

    var match = r.exec("93px"); 
    var number = parseFloat(match[1]); 
    var symbol = match[2]; 
    if (symbol == "px") { 
        // validate number as a pixel 
    } else if (symbol == "%") { 
        // evaluate as percentage 
    } else { 
        // no symbol was entered 
    } 
    
    +0

    감사합니다. Cletus, 코드를 수정하여 성공적으로 테스트했습니다. –