2013-12-20 2 views
-2

here의 두 정규식을 결합하여 호스트 이름과 IP 주소의 유효성을 단일 명령문에서 확인하려고합니다.단일 정규식으로 호스트 이름과 IP 주소의 유효성 확인

나는 그것들을 별도로 작동 시키지만, |을 사용하여 결합하면, 모든 유효한 패턴이 아닌 원하는 호스트 이름과 ips의 조각이 일치하지 않을 수 있습니다. 아래의 호스트 이름과 IP 패턴을 사용하여 호스트 또는 IP 주소 중 하나와 일치하는 단일 정규식이 필요합니다.

각 패턴을 테스트 한 곳에서 스크래치 패드를 제공했습니다. 마지막 것은 유효하지 않은 단편과 일치하는 정규식을 보여주는 예제와 함께 그들을 결합하려는 나의 시도입니다.

^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3})$ 

regex: Host name and IPs

regex: IP Address

^((([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]))$ 

regex: Host Names

당신은 우선 순위의 문제가 있었다

^((([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]))|((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3})$ 
+0

글쎄? 우리가 가진 것을 보여줘. 일부 오프 사이트 리소스가 아닌 질문에 정규식을 포함하십시오. –

+0

작성한 코드 관련 문제는 질문 자체에 특정 문제를 설명하고이를 재현 할 수있는 유효한 코드를 포함해야합니다. 나는 이것을 알고있는 4800 명을 가진 누군가를 기대했을 것입니다. –

+0

'\ (regex1 \) \ | \ (regex2 \)'로 그들을 결합하십시오. 언어에 따라 역 슬래시가 필요할 수도 있고 필요하지 않을 수도 있습니다. – Guido

답변

2

(작동하지 않습니다). 당신이

^(regex1)|(regex2)$ 

을 썼을 때 그것은 그래서 유효한 호스트로 시작 또는 IP 주소로 끝나는 라인을 확인 일치

(^(regex1))|((regex2)$) 

으로 해석했다. 해결책은하는 것입니다으로 나오는

^regex1$|^regex2$ 

:

^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3})$|^((([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9]))$ 
+0

+1 설명을 위해 필자는 구분 기호를 두 번 이상 사용할 수 없다는 인상하에'^'및'$ '를 사용했습니다. – raffian

+0

사소한 문제 : 결합 된 정규 표현식이 '1', '1.2'및 '1.2.3'IP 패턴과 일치합니다. 나는 그것과 함께 놀았 어, http://regex101.com/r/zC2eZ0, 그것을 알아낼 수가 없어. – raffian

+1

@raffian, 실제로 호스트 이름과 일치합니다. 숫자로 시작하는 것을 허용하지 않으려면 호스트 이름 정규식을 수정해야합니다. – Guido

관련 문제