2012-02-20 4 views
0

처음에는 두 가지 다른 정규식 스레드를 체크 아웃했지만 '정규식을 사용하여 URL의 유효성을 검사하는 방법'과는 다릅니다.괄호와 괄호가있는 정규식 문제가있는 URL의 유효성 확인

추천 URL이 http 또는 https인지 확인하고 '하위 도메인'이 '준비', 'www'또는 '검색'으로 구성되어 있는지 확인합니다.

^(https|http)://(staging|www|search).mysite.com 

(이 문제가 해결되어, 편집 후 새로운 질문) 나는 생각 나는 데 문제는 개방 캐럿에 인접한 괄호를 포함한다.

아이디어가 있으십니까?

또한 .com 부분 이후에 아무것도 허용하는 방법은 무엇입니까? 그리고 몇 가지 이유로 URL 앞의 문자를 2http : //staging.mysite.com에서 계속 사용할 수 있습니다. 이유가 무엇입니까?

편집 : 원래 문제가 해결 되었기 때문에 브라우저가 원본 정규식 스크립트를 캐시했을 수도 있습니다.

내 유일한 질문은 2http : //staging.mysite.com이 유효성을 확인하지 못하도록하는 방법입니다. 캐럿은 문자열이 http 또는 https로 시작해야 함을 의미한다고 생각했습니다.

는 내가는 preg_match을하고, 그리고 난 그냥 문자열이 위의 요구 사항이 포함되어 있는지 확인하는 것하지만 실제로 매력처럼 http 또는 https로

+0

무엇이 오류입니까? 괄호는 괜찮습니다. (그리고 당신의 점은 모든 것을 일치 시키지만 큰 문제는 아닙니다). 슬래시도 이스케이프 처리하십시오. '\ /' – sweaver2112

+0

@ sweaver2112 URL이 http 또는 https로 시작하지 않아도 어떤 이유로 문자열은 preg_match에서 유효성을 검사합니다. 말하자면, 나는 http 이전에 무엇이든 추가 할 수 있으며 URL의 나머지 부분은 preg match와 regex가 정확하지 않은 것으로 전달할 것입니다. – Eric

+0

아래와 같이 문자열의 시작 부분을 패턴에 추가하십시오 :'^' – Basti

답변

1
$string = "https://www.mysite.com/foo/bar"; 

preg_match("~^(https|http)://(staging|www|search)\.mysite.com~", $string, $matches); 

var_dump($matches); 

array 
    0 => string 'https://www.mysite.com' (length=22) 
    1 => string 'https' (length=5) 
    2 => string 'www' (length=3) 

일을 시작 있는지 확인되지 않은 추측 . ($을 사용하여) 패턴의 끝을 요구하지 않으면 임의의 문자가 올 수 있습니다. 2http : // ^을 사용하여 (https | http)로 시작하는 문자열이 필요했기 때문에 // 작동하지 않습니다.

+0

고맙습니다. 나는 정규식이 시작되고 ~로 끝나는 이유를 찾아야 할 것이다. 그러나 시간과 도움에 감사드립니다. – Eric

+0

는 임의적입니다. 원하는 경우 슬래시를 사용할 수 있습니다. 그렇게하면 패턴의 슬래시를 이스케이프 처리해야합니다 :'preg_match ("/^(https | http) : \/\/(스테이징 | www | search) \. mysite.com/", $ string, $ 일치); – Basti

관련 문제