[regex] 문자열이 http : // 또는 https : //로 시작하는지 테스트 할 정규식

나는 문자열의 시작을 검사하는 정규 표현식을 설정하기 위해 노력하고있어, 그것이 하나가 포함 된 경우 http://또는 https://그것과 일치해야합니다.

어떻게해야합니까? 작동하지 않는 다음을 시도하고 있습니다.

^[(http)(https)]://



답변

사용 []이 잘못되었습니다. []이는 문자 클래스 를 나타내므로 한 문자와 만 일치합니다. 표현은 [(http)(https)]“일치하는 변환 (, h하는 t하는 t하는을p 하는 ), 또는를 s.” 중복 문자는 무시됩니다.

이 시도:

^https?://

실제로 대체를 사용하려면이 구문을 대신 사용하십시오.

^(http|https)://


답변

대소 문자 구분 :

var re = new RegExp("^(http|https)://", "i");
var str = "My String";
var match = re.test(str);


답변

^https?://

상황에 따라 슬래시를 이스케이프해야 할 수도 있습니다.


답변

^https?:\/\/(.*)어디 (.*)다른 일치하는 모든 후입니다https://


답변

이 작동합니다

^(http|https)://


답변

이것은 URL 인코딩 문자열에서도 작동합니다.

^(https?)(:\/\/|(\%3A%2F%2F))


답변

이 대소 문자를 구분하지 않는 것은 asp.net에서 작동하지 않았으므로 각 문자를 지정했습니다.

다음은 asp.net RegularExpressionValidator 에서 작동시키기 위해 수행해야 할 작업입니다 .

[Hh][Tt][Tt][Pp][Ss]?://(.*)

노트:

  • (?i) 그리고 사용 /whatever/i자바 스크립트가 대소 문자를 구분하지 않기 때문에 이 아마 작동하지 않았습니다.
  • 원래 ^처음에는 있었지만 문제가되지 않았습니다. 그러나 (.*)(표현은 없이는 작동하지 (.*)않았지만 없이는 작동했습니다.^ )
  • 탈출 할 필요는 //없었지만 좋은 생각 일 수 있습니다.

필요한 경우 전체 RegularExpressionValidator는 다음과 같습니다.

<asp:RegularExpressionValidator ID="revURLHeaderEdit" runat="server"
    ControlToValidate="txtURLHeaderEdit"
    ValidationExpression="[Hh][Tt][Tt][Pp][Ss]?://(.*)"
    ErrorMessage="URL should begin with http:// or https://" >
</asp:RegularExpressionValidator>