2013-04-05 5 views
4

이 정규 표현식이 작동하지 않는 이유는 잘 모르겠습니다. 쉼표와 공백이있는 유효성 검사를위한 정규식

  1. 12345678,12345678,12345678
  2. * 공간 * 12345678, 12345678, 12345678,
  3. 12345678,12345678 12345678, 공간
그것은해야 8 자리의 경우 : 나는 입력이 형식에있는 경우 유효성을 검사 할 false를 반환하지 않습니다. 아래 정규 표현식은 내가 한 일이지만 숫자의 2 세트를 위해 일하고있다.하지만 다른 숫자 세트를 입력 할 때 유효하지 않다.

  1. 작업 : 12345678,
  2. 12345678가 작동하지 않음 : 12345678, 12345678은
    var validate_numbers = /^\s*\d{8}\s*\+*(,\s*\d{8},*)?$/; 
    

12345678 당신에게 당신은 좀 더 구체적으로 일치시킬 것을 설명 할 필요가

답변

2

감사드립니다. 쉼표와 쉼표로 구분 된 8 자리 숫자의 num을 매치하고 쉼표로 뒤따를 수 있다고 가정합니다.

문제는 최대 2 자리 숫자를 차지한다는 것입니다. Visualization.

^(\s*\d{8}\s*[+,]?\s*)*$ 

다시 말하지만, 당신이 debuggex에 그것을 시각화 할 수 있습니다 : 가정 위에 주어진

이 원하는 정규식입니다.

+0

와우, debuggex 화려한이다. 링크 주셔서 감사합니다! 나는 또한 너무 대담하게 http://gskinner.com/RegExr/을 제안 할 수도 있습니다. – Iain

+0

고마워요! 알았다! –

+0

안녕하세요, 현재이 정규식은 위의 모든 상황에 대해^(\ s * \ d {8} \ s * [+,]? \ s *) * $ 확인입니다. 그러나 문자열이 1234567812345678 일 때 true를 반환합니다. 편집하려고합니다. 그러나 그 결과는 여전히 동일합니다. 어떤 생각이든 내가 어떻게 할 수 있니? 코드가 위와 1234567812345678 상황을 확인할 수 있도록? –

0

요구 사항에 대해 좀 더 자세히 설명해 주시겠습니까? 쉼표 앞에 공백이 있어야합니까?

\\d{8}(?:,\\d{8})*+ 

함께 시도해보십시오. 8 자리 숫자의 목록을 확인하고 쉼표로 구분하여 요구 사항을 만족시키는 것이 좋습니다.

희망 하시겠습니까?

0

현재 정규 표현식에서 '$'을 제거하십시오. 그것은 당신의 표현이 당신의 원하는 문자열에서 false를 반환하도록하는 라인의 끝 부분에 대해 정확히 일치합니다. 다음 코드는 앞서 언급 한 FALSE를 반환했던 문자열에 대해 TRUE를 반환합니다.

omgerd 내가 자동으로 PHP에서 첫 번째 응답을 썼다 여기에 빠른 JS 편집을하다

var pattern = /^\s*\d{8}\s*\+*(,\s*\d{8},*)?/; 
var data2 = '12345678 , 12345678 ,12345678'; 
if (pattern.test(data2) != 0) { 
    alert("ok"); 
} 

출력 : 확인

+0

$를 제거하면 8 자리 숫자 다음에 문자 만있는 잘못된 문자열과 일치합니다. –

관련 문제