2012-08-08 3 views
1

Google App Script의 독립 실행 형 스크립트에서 URL을 처리하는 중입니다.Google App 스크립트를 사용하여 URL 구문 분석

내 문제는 그물에있는 정규식 buiding 도구가 내 정규식이 옳다는 것을 말해 주지만, 나는 하나의 가치만을 갖는다.

특히 내 코드 :

function UrlComponents(url) { 
    const _urlMatchPattern = /^((http[s]?):\/)?\/?([^:\/\s]+)(:([^\/]*))?((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(\?([^#]*))?(#(.*))?$/mig; // Source: http://stackoverflow.com/questions/27745/getting-parts-of-a-url-regex 

    if (!_urlMatchPattern.test(url)) 
    return new Array(); 

    var urlMatches = url.match(_urlMatchPattern); 

    if (urlMatches != null) 
    { 
    Logger.log("Count:" + Math.floor(urlMatches.length)); 

    for (var i=0; i<Math.floor(urlMatches.length);i++) 
     Logger.log("Position " + i + ": " + urlMatches[i]); 
    } 

    return urlMatches; 
} 

I 코드를 실행하여 테스트하는 경우, 출력은 충전 문자열을 포함하는 단일 배열 요소이다. 그러나 정규식 테스트 도구 (예 : http://gskinner.com/RegExr/ 또는 www.regexplanet.com/advanced/java/)를 통해 동일한 정보가 올바른 정보를 제공합니다.

내 어쩔 수없는 어리석은 실수를 지적하거나 도움을 주신 모든 분들께 감사드립니다. 즉 라인이

const _urlMatchPattern = /^((http[s]?):\/)?\/?([^:\/\s]+)(:([^\/]*))?((\/\w+)*\/)([\w\-\.]+[^#?\s]+)(\?([^#]*))?(#(.*))?$/mi; 

답변

1

조니

. 매력처럼 작동합니다. 나는이 모든 조합을 시험했다고 믿었습니다.
+0

고마워, megabyte1024해야한다 감사와

, 당신이 당신의 정규 표현식에서 /g 수정을 제거해야하는 문제를 해결하기 위해 –

+0

@ Jonny Mak 만약 내가 당신의 코드의 일부분을 사용해야한다면 그 부분에 대한 URL을 깨지 않고 페이지에서 모든 링크를 추출하고 싶습니까? – user1788736