2012-05-23 2 views
1

9 개의 연속 번호 또는 14 개의 연속 번호와 일치하는 다음 정규 표현식을 만들었습니다.Regex : Match on No Value

^[0-9]{14}$|^[0-9]{9}$ 

어떻게이 정규 표현식을 9 개의 연속 번호 또는 14 개의 연속 번호 또는 null 값과 일치시킬 수 있습니까?

기본적으로 정규 표현식을 수정하여 사용자가이 필드에 값을 입력 할 필요가 없도록하고 싶습니다. 또는 다른 말로하면이 필드에 대한 유효성 검사를 선택적으로 만듭니다.

+0

null 값을 어떻게 고려하십니까? 길이 0의 문자열, 공백의 문자열, 문자열 ""null "'? – skarmats

+0

0의 문자열 길이 –

답변

1

방법에 대해 : 문자열이 비어

if (value.length && !value.match(/^(?:[0-9]{14}|[0-9]{9})$/) { 
    alert('invalid value'); 
} 

경우가 전달합니다; 비어 있지 않으면 정규 표현식과 일치해야합니다.

정규식 유일한 해결책 :

if (!value.match(/^(?:[0-9]{14}|[0-9]{9})?$/) { 
    alert('invalid value'); 
} 
+0

나는이 것을 순전히 정규 표현식에 보관하고 싶었다. –

+0

@ kmb385 님이 답변을 –

+0

우수하게 업데이트했습니다. 업데이트 해줘서 고마워. 하나의 후속 조치로 토큰을 그룹화하려면? : 부분을 사용해야합니까? 그냥 내 자신의 이해를 요구. –

1

그냥 다른 대안을 추가합니다.

^[0-9]{14}$|^[0-9]{9}$|^$ 

리팩토링 할 수있는 옵션 9 다음에 다른 5 자리 숫자도 추가 할 수 있습니다. 당신이 그룹을 캡처 필요가없는 경우

^([0-9]{9}([0-9]{5})?)?$ 

(?:...)와 비 캡처 그룹은 약간 빠른 수 있지만 이러한 맥락에서, 차이는 무시할 수있다.