정규 표현 식 을 한 가지 예 로 쉽게 배 울 수 있 습 니 다.
예시
// URL ,
var parse_url = /^(?:([A-Za-z]+):)?(\/{0,3})([0-9.\-A-Za-z]+)(?::(\d+))?(?:\/([^?#]*))?(?:\?([^#]*))?(?:#(.*))?$/;
var url = "http://www.ora.com:80/goodparts?q#fragment";
var result = parse_url.exec(url);
var names = ["url", "scheme", "slash", "host", "port", "path", "query", "hash"];var i;
for (i = 0; i < names.length; i++) {
document.writeln(names[i] + ": " + result[i] + "<br/>");
}
// :
url: http://www.ora.com:80/goodparts?q#fragment
scheme: http
slash: //
host: www.ora.com
port: 80
path: goodparts
query: q
hash: fragment
해석 하 다.다음은 parse 를 분해 합 시다url 의 각 부분 에서 어떻게 일 하 는 지 보 세 요.
^
^문 자 는 이 문자열 의 시작 을 표시 합 니 다.이것 은 닻 입 니 다.exec 는 URL 이 아 닌 접 두 사 를 건 너 뛰 지 말고 처음부터 URL 과 같은 문자열 만 일치 하도록 안내 합 니 다.
(?:([A-Za-z]+):)?
이 인 자 는 프로 토 콜 이름 과 일치 하지만,그 뒤에 다음 을 따 를 때 만 일치 합 니 다.(?:...)비 포획 형 그룹(noncapturing group)을 표시 합 니 다.접미사이 그룹 을 선택 할 수 있 음 을 표시 합 니 다.0 번 이나 1 번 반복 하 는 것 을 표시 합 니 다.(..)포획 형 그룹 을 표시 합 니 다.포획 형 그룹 은 일치 하 는 텍스트 를 복사 해서 result 그룹 에 넣 습 니 다.모든 포획 형 그룹 은 하나의 번 호 를 지정 합 니 다.첫 번 째 포획 형 그룹의 번 호 는 1 이기 때문에 이 그룹 에 일치 하 는 텍스트 복사 본 은 result[1]에 나타 납 니 다.[...]문자 클래스 를 표시 합 니 다.A-Za-z 라 는 문자 류 는 대문자 26 개 와 소문 자 26 개 를 포함한다.연결 문자-표시 범 위 는 A-Z 입 니 다.접미사+이 문자 류 는 한 번 또는 여러 번 일치 합 니 다.이 그룹 뒤에 문자 가 따라 옵 니 다.글자 에 따라 일치 합 니 다.
(\/{0,3})
이 인 자 는 포획 형 그룹 2 로 매 칭//입 니 다.\/일치 하 다이 정규 표현 식 의 끝 문자 로 잘못 해석 되 지 않도록\(역 슬 래 쉬)로 의 미 를 바 꿉 니 다.접미사{0,3}표시/0~3 회 일치 합 니 다.
([0-9.\-A-Za-z]+)
이 인 자 는 포획 형 그룹 3 입 니 다.호스트 이름 과 일치 합 니 다.하나 이상 의 숫자,알파벳,또는-문자 로 구 성 됩 니 다.-범 위 를 나타 내 는 연결 문자 와 헷 갈 리 지 않도록\-로 전 의 됩 니 다.
(?::(\d+))?
이 선택 할 수 있 는 인 자 는 포트 번호 와 일치 합 니 다.이것 은 사전 설정 입 니 다.하나 이상 의 숫자 를 더 해서 구 성 된 시퀀스 입 니 다.\d 는 숫자 문 자 를 표시 합 니 다.하나 이상 의 숫자 로 구 성 된 숫자 열 은 캡 처 형 그룹 4 로 캡 처 됩 니 다.
(?:\/([^?#]*))?
이 인자 도 선택 할 수 있 는 그룹 입 니 다.경로 와 일치 합 니 다.이 그룹 은 하나 로 시작 합 니 다.다음 문자 클래스[^?\#]하나의^로 시작 하면,이것 은 이 종류의 포함 제 거 를 표시 합 니까?\#이외 의 모든 문자 와.*이 문자 클래스 는 0 번 이나 여러 번 일치 합 니 다.
내 가 이곳 에서 처리 하 는 것 은 엄밀 하지 않다 는 것 을 주의해 라.이 종 류 는 일치 합 니까?\#이외 의 모든 문 자 는 줄 끝 문자,제어 문자,그리고 여기 서 일치 하지 않 는 문 자 를 포함 합 니 다.대부분의 경우,그것 은 우리 가 기대 하 는 대로 할 수 있 지만,일부 악성 텍스트 는 누 출 될 위험 이 있 을 수 있다.엄밀 하지 않 은 정규 표현 식 은 흔히 볼 수 있 는 안전 구멍 의 발원지 이다.엄밀 하지 않 은 정규 표현 식 을 쓰 는 것 이 엄밀 한 정규 표현 식 을 쓰 는 것 보다 훨씬 쉽다.
(?:\?([^#]*))?
이 인 자 는 하나 로 하나 로?시작 할 선택 가능 한 그룹 입 니 다.캡 처 형 그룹 6 을 포함 합 니 다.이 그룹 은 0 개 이상 의 비\#문 자 를 포함 합 니 다.
(?:#(.*))?
이 인 자 는\#로 시 작 된 선택 가능 한 그룹 입 니 다.줄 끝 자 를 제외 한 모든 문자 와 일치 합 니 다.
$
$이 문자열 의 끝 을 표시 합 니 다.그것 은 이 URL 의 끝 부분 에 더 이상 의 내용 이 없다 는 것 을 보증한다.
이 간단 한 예 를 통 해 여러분 들 이 정규 표현 식 에 대해 더욱 진일보 한 이 해 를 가지 게 되 었 다 고 믿 습 니 다.여러분 들 의 학습 이 즐 겁 기 를 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
awk 상용 명령awk 는 모든 입력 줄 을 하나의 기록 으로 인식 하고 그 줄 의 모든 단어 도 메 인 을 하나의 필드 로 인식 합 니 다. ARGC 명령 줄 에 awk 스 크 립 트 가 들 어 오 는 매개...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.