2013-04-28 5 views
0

에 대한 preg_match를 개선 I가 다음 URL 문자열 :다국어 도메인에 대한 하위 도메인 언어

de.example.com 
it.example.com 
XX.example.com 

그냥 :

example.com 

언어 코드 2 개 문자 [AZ] 그래서

해야한다 문자열이 일치하면 preg_match를 사용하여 문자열을 비교합니다.

'!^(.*).example.com$!' 

anylanguage.example.com과 일치 하나 domain.com 문자열 하나에 문제가 있습니까? preg_match를 두 조건으로 모두 수정해야합니까? 고맙습니다! 언어는 항상 2 개 문자의 경우

답변

1

:

'!^([a-z]{2})?\.?example\.com$!' 
+0

감사합니다 비 캡처 패턴이다! 그것은 매력처럼 작동합니다! –

+0

@KenTang - 코드를 복사하고 잊어 버리지 마십시오. 배우기 위해 그것을 사용 해보세요 ;-) –

1

도트 문자의 경우 domain.com에는 정규 표현식과 일치하지 않습니다.

'!^(.*)[\.]?domain.com$!' 
2
'!^(?:([a-z]{2})\.)?example\.com$!i' 

변경 : 그래서 난 그냥 형식으로 수정합니다

    • . 수단 "모든 문자"가 아닌 "점"
    • ?하는 의미 "옵션" [a-z]은 "a부터 z까지의 문자"를 의미합니다.
    • 수단 (10)은 "정확히 두 개의"
    • (?:....)
    • i 플래그 수단 "대소 문자 구분"는
  • +0

    위대한, 나는 포착 패턴'(? : ....)'을 몰랐습니다! –

    관련 문제