문자열 유효성 검사를 위해 정규 표현식이 필요합니다. 문자열은 비어 있거나 5 자리 숫자를 가질 수 있으며 9 자리 숫자를 가질 수 있습니다. 다른 상황은 유효하지 않습니다. 다음 정규식을 사용하고 있습니다 :PHP 정규식 자릿수 만 5 또는 9
/\d{5}|\d{9}/
그러나 작동하지 않습니다.
문자열 유효성 검사를 위해 정규 표현식이 필요합니다. 문자열은 비어 있거나 5 자리 숫자를 가질 수 있으며 9 자리 숫자를 가질 수 있습니다. 다른 상황은 유효하지 않습니다. 다음 정규식을 사용하고 있습니다 :PHP 정규식 자릿수 만 5 또는 9
/\d{5}|\d{9}/
그러나 작동하지 않습니다.
그냥 Marc B said in the comments로,이 정규 표현식을 사용합니다 (그룹을 선택적으로 만드는 숫자 식 주변의 ?
한정 기호에 유의하십시오).
이 패턴의 다른 점은 교대로 다른 패턴과 반대되는 점입니다. 5 자리가 일치하지 않으면 백 트랙킹이 필요하지 않습니다.
"작동하지 않는다"는별로 도움이되지 않습니다. 하지만 이런 식으로되지 않을까요?
/^(\d{5}|\d{9}|)$/
(비트 정규 표현식에 녹슨,하지만 난 후, "다음 5 자리 또는 9 자리 숫자 또는 아무것도를 시작하면됩니다 종료하려고 해요) 당신은 앵커 ^
및 $
를 잊어
~^(?:\d{5}|\d{9}|)$~
문자열이 없으면 문자열의 시작이나 끝뿐만 아니라 문자열의 어느 위치에서도 문자열이 일치합니다. 또한 빈 문자열을 포함하지 않았습니다.
앵커와 빈 문자열을 허용하는 "?"
이 다른 네 자리 (따라서 구 총 자리) 또는 아무 문자 전혀 다음에 할 수있는 중 정확히 5 자리 숫자 일치/^(\d{5}(\d{4})?)?$/
:
/^(\d{5}|\d{9})?$/
왜 perl 스타일의 정규식을 사용하는지에 대한 답은 왼쪽에서 오른쪽으로 우선 순위가 매겨집니다.
변경 그것에 :
이/\d{9}|\d{5}/
/^(\d{5}|\d{9}|)$/
'/^(\ d {5}) (\ d {4})?) $ /'? 숫자가 문자열에서 유일한 것으로 가정하면, 5 자리 숫자와 일치하며, 4 자리수를 선택적으로 따라 올 수 있습니다. –
@MarcB : 구문 상 유효하지도 않습니다. –
퀴어 리언, 빈 문자열이 뭐라 말할까요? – sln