2014-06-08 3 views
0

내가 자바 스크립트에서 정규식을 사용하여 다음과 같은 형식정규식

[Number]-[Number]의 입력과 일치하는 것을 시도하고있는 수의 범위 표현식을 일치.

  • 200-300 확인
  • -0992이 NOT OK
  • aa-76이 NOT OK
  • 1-이 NOT OK
  • 내가 트라이

    1. 1-100 OK : 예를 들어

      d :

      ^\d+(-\d+)*$ 
      

      하지만 이는 전혀 작동하지 않습니다.

      모든 포인터?

    +0

    '[Number] - [Number]'는 구체적이지 않습니다. 다른 한정자가 있습니까? – esqew

    +0

    내 질문에 정확한 시나리오를 편집하여 도움이 되었기를 바랍니다. –

    +3

    지금까지 가지고있는 패턴과 '1'과 '1-10-100-1000'을 비교할 수있는 이유를 이해하고 있습니까? –

    답변

    2

    찾으시는 정규식은 /\d+-\d+/입니다. 전체 행이 정규 표현식과 일치하도록 요구하지 않으면 주변을 둘 필요가 없습니다 ^$. 예를 들어 :

    /\d+-\d+/.test("a-100") 
    // Result: false 
    /\d+-\d+/.test("-100") 
    // Result: false 
    /\d+-\d+/.test("10-100") 
    // Result: true 
    
    4

    가 작동하지 않는 이유는 * 한정사가 정규식은 단순히 222 일치하도록 허용하는 (-\d+)가 선택하게한다는 것입니다. 그것을 제거하고 모두 잘 될 것입니다. 당신은 괄호가 필요하지 않은 경우,이를 제거 :

    ^\d+-\d+$ 
    

    당신이 당신의 숫자는 0과 100 사이하려면 제목으로?

    각 측면에 당신의 숫자가 0을 후행하지 않고, 1에서 100의 범위에 있는지 확인하려면이 대신 \d를 사용할 수 있습니다

    100|[1-9]\d|\d 
    

    귀하의 정규식은 다음이 될 것입니다 :

    ^(?:100|[1-9]\d|\d)-(?:100|[1-9]\d|\d)$ 
    

    왼쪽 숫자가 올바른 숫자보다 작아야합니까?

    위의 정규 표현식은 첫 번째에 대해서는 2222-1111이고 두 번째 경우에는 99-12입니다. 당신이 낮은보다 커야 오른쪽 숫자를 원한다면, 당신은 캡처 괄호로 각 숫자를 캡처 할 수 있습니다 : 일치가있는 경우

    ^(\d+)-(\d+)$ 
    

    또는 다음

    ^(100|[1-9]\d|\d)-(100|[1-9]\d|\d)$ 
    

    if(regexMatcher.group(2) > regexMatcher.group(1)) { ... success ...}