2010-08-06 17 views

답변

5

경우, 당신이 원하는 :

^(?:[0-9]{5}|[0-9]{10}|)$ 
4
[0-9]{5}|[0-9]{10}|null 

이 그것을해야 5 자리 숫자 10 자리 숫자, 또는 null

감사 할 수 있도록하고 싶습니다.

^(?:[0-9]{5}|[0-9]{10}|null)$ 
: 당신이 정규식을 사용하는 방법에 따라, 당신은 항상 8 자리 문자열 내부의 전체 문자열뿐 아니라 5 자리 문자열을 일치하는지 확인하기 위해 그것을 고정해야 할 수도 있습니다

^$ 정규 표현식을 앵커로 지정하면 (?:...)은 대체 기호가 포함 된 캡처되지 않은 그룹입니다.

편집 : 당신이 null == "빈 문자열"을 의미하는 경우,

^(?:[0-9]{5}|[0-9]{10}|)$ 
11

그냥 |null을 추가 사용

[0-9]{5}|[0-9]{10}|null 

당신은 아마 알다시피, |는 "또는"연산자, 및 문자 열 null은 null이라는 단어와 일치합니다. 따라서 <your previous pattern> or null으로 읽을 수 있습니다.


패턴이 null 문자열과 일치하도록하려면 답이 불가능합니다. 즉, null 입력 문자열에 대해 Matcher.matches()이 true를 반환하는 등의 방법은 없습니다. 그건 당신이 계신 있다면, 당신은 위 정규 표현식을 사용하고 str 실제로 null 동일한 경우 "null"을 초래할 것이다 str에없는 일치하지만 ""+str에 멀리 얻을 수 있습니다. 널 (null)에 의해 당신이 빈 문자열을 의미

관련 문제