2016-08-13 3 views
-1

자바 스크립트에서 사용자 입력을 구문 분석해야합니다. 입력 형식은 number - number입니다. 이것은 쉼표로 반복하여 구분할 수 있습니다. 다음의 몇 가지 예입니다 : 여기Regex - 제약 조건이있는 숫자의 범위 확인

1-10 
4-10,13-17 
6-10,3-8,4-12 

내가 그러나이

(\d+[-]\d+[,]?) 

에 대해 쓴 정규식되고,이 개 제약이있다.

  1. 첫 번째 숫자는 두 번째 숫자보다 작아야한다 (4-5 유효하지만 5-4 없음)
  2. 마다 값이 1과 N (포함) 사이에 있어야한다. N을 지정할 것입니다.

정규 표현식으로 이러한 제약 조건을 적용 할 수있는 방법이 있습니까?

+0

숫자 범위의 정규식은 사용되기 전에 생성되어야한다. 이것은 사소한 것이 아니기 때문에 하드 코딩해야합니다. N이 20에서 67까지 N이 있다고 말하는 것처럼, 67-20이나 47 개의 정규식이 필요합니다. – sln

+0

왜 이것을 위해 regexp를 사용하고 싶다고 생각하십니까? –

+0

@torazaburo 정규식에 제약 조건을 추가 할 수 없으므로 내 질문에 더 잘 표현해야한다고 생각했습니다. 세바스찬은 내가 원하는 것처럼 정규 표현식을 사용하여 올바른 방향으로 나를 지적했다. 나는 js와 정규 표현식에 대한 경험이 거의 없기 때문에 이것을 수행하는 방법이나 그것을 수행하는 좋은 방법이 확실하지 않았다. – eric

답변

2

확실히 형식을 정규식과 일치시킬 수 있지만 원하는 종류의 검증을 수행 할 수는 없습니다. 내가 추천하는 것은 다음과 같다 (JS에서) :

function verifyList(list) { 
    var matches = list.match(/\d+-\d+/g); 
    for (match in matches) { 
     var numbers = match.match(/(\d+)-(\d+)/); 
     if (numbers[1] >= numbers[2]) return false; 
    } 

    return true; 
} 
관련 문제