2012-02-24 2 views
0

을 내가 HTTP를 추가 할 수있는 다음과 같은 방법이 작동하지 않는 'HTTP를 포함하지 않는' http가 포함되어 있지 않지만, http : //가 이미 포함되어있는 경우, http : //가 이미 포함되어 있으면 추가되고, 두 개로 끝납니다. https : //가 이미 포함되어 있으면 URL이 전혀 반환되지 않습니다.루비 URL 정규식,

내 정규 표현식에서 실수를 했습니까?

^https?:\/\/ 

테스트 here :

+0

답변 이외에도 https 및 htts와 일치합니다. 선택 문자 뒤에 물음표를 넣어야합니다. – markijbema

답변

1

비 정규식 용액 :

def smart_url(url) 
    url.start_with?('http://', 'https://') ? url : 'http://'+url 
end 

? : 구조체는 if .. then..else..end를 쓰는 간단한 방법이다.

+0

그냥 그때 다른 사람처럼 전환해야합니다 :? url : 'http : //'+ url. 고마워요. :) – Darcbar

+0

아 .. 그거 엉터리 였어. 수정 된 – steenslag

3

당신은에 정규 표현식을 변경해야합니다.

+0

위의 정규식을 사용하는 경우 http 또는 https가 이미 포함되어 있으면이 메서드는 아무 것도 반환하지 않습니다. – Darcbar

+0

Ruby의 일반적인 동작입니다. Ruby의 메소드는 최근 평가 된 표현식을 리턴합니다. 마지막 줄에'url'을 추가하십시오. – lucapette

+0

내가 아닌 정규식 접근 방식으로 가기로 결정했지만 당신의 대답도 정확했습니다, 덕분에 – Darcbar