[regex] 숫자를 두 번 또는 네 번 일치시키는 정규식

정규 표현식에 대한 간단한 질문이지만 답을 찾지 못했습니다.

숫자가 정확히 번 또는 번 순서대로 나타나는지 확인하고 싶습니다 . 어떤 구문을 사용할 수 있습니까?

\d{what goes here?}

시도 \d{2,4}했지만이 표현식도 세 자리 숫자를 허용합니다.



답변

이에 대한 구체적인 구문은 없지만이를 수행하는 방법에는 여러 가지가 있습니다.

(?:\d{4}|\d{2})    <-- alternation: four digits or two
\d{2}(?:\d{2})?    <-- two digits, and optionally two more
(?:\d{2}){1,2}     <-- two digits, times one or two


답변

(?<!\d)(\d{2}|\d{4})(?!\d)

이것이 올바른 방법입니다. 받아 들여진 대답은 틀렸다.

3 자리 (또는 5)와 일치합니다. 그래서 그것은 내 눈에 잘못된 것입니다 .

1) 연속 된 2, 4 자리 또는 연속 된 2-4 자리 뒤에 숫자가 없는지 확인합니다.

  • (<!) 구문은 부정적인 lookbehind입니다.

  • (?!) 구문은 부정적 예측입니다.

위의 내용은 중간 문자열에서 작동합니다.

검색 문자열이 주위에 내용이없는 경우에는 사용할 수 ^$시작 및 문자열 앵커의 끝 :

^\d{4}$|^\d{2}$


답변