> 웹 프론트엔드 > JS 튜토리얼 > URL을 보다 효과적으로 일치시키기 위해 정규식을 어떻게 개선할 수 있습니까?

URL을 보다 효과적으로 일치시키기 위해 정규식을 어떻게 개선할 수 있습니까?

DDD
풀어 주다: 2024-12-22 08:23:09
원래의
658명이 탐색했습니다.

How Can I Improve My Regular Expression to Match URLs More Effectively?

URL 일치를 위한 향상된 정규식

사용자 입력에서 URL을 감지하고 구문 분석할 때 효과적인 정규식을 사용하는 것이 중요합니다. 귀하의 경우 현재 표현식은 일부 URL 형식을 캡처하지만 www.google.com과 같은 명시적인 프로토콜 체계가 없는 URL은 설명하지 못합니다.

수정된 정규 표현식

이 문제를 해결하고 포괄적인 URL 일치를 보장하려면 다음과 같이 개정된 정규식을 사용하는 것이 좋습니다. 표현식:

^(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)
로그인 후 복사

정규식 분석

  • 앵커: 일치가 전체 문자열을 시작하고 끝나는지 확인합니다.
  • 프로토콜(선택 사항): 선택 사항을 캡처합니다. "http" 또는 "https" 프로토콜 체계.
  • 도메인: 하위 도메인 및 최상위 도메인을 포함하여 도메인 이름과 일치합니다.
  • 포트 : 선택적 포트 번호를 캡처합니다(예: ":8080").
  • 경로: 도메인 뒤의 모든 경로 정보를 캡처합니다(예: "/index.html").
  • 쿼리: 쿼리 문자열 매개변수를 캡처합니다(예: "?name=John").
  • Fragment: 조각 식별자(예: "#footer")를 캡처합니다.

이 수정된 정규식은 더 적습니다. 제한적이며 www.google.com과 같은 URL은 물론 명시적인 프로토콜(예: http://www.stackoverflow.com).

구현예(JavaScript)

const regex = new RegExp(/(?=\S{1,255}$)(https?://)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)g);
const url = 'www.google.com';

if (url.match(regex)) {
  console.log("URL successfully matched.");
} else {
  console.log("URL did not match.");
}
로그인 후 복사

위 내용은 URL을 보다 효과적으로 일치시키기 위해 정규식을 어떻게 개선할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿