기본 개념
정규 표현식은 일반 문자(예: a와 z 사이의 문자)와 특수 문자('메타 문자'라고 함)를 모두 포함하는 텍스트 패턴입니다. 패턴은 텍스트를 검색할 때 일치시킬 하나 이상의 문자열을 설명합니다.
우선 여러 정규식 편집기를 추천합니다
Debuggex: https://www.debuggex.com/
PyRegex:http://www.pyregex.com/
정규식: http://www.regexper.com/
정규식은 검색 및 문자열 바꾸기 작업입니다. 정규 표현식은 텍스트 편집기에서 널리 사용됩니다. 예를 들어 정규 표현식이 사용됩니다.
[복사] 텍스트에 지정된 특징어가 포함되어 있는지 확인하세요
텍스트에서 일치하는 특징어의 위치를 찾아보세요
문자열의 하위 문자열
과 같은 텍스트에서 정보를 추출합니다.
텍스트 수정
설명: 정규식은 일반적으로 1. 확인, 2. 검색/바꾸기의 두 가지 작업에 사용됩니다. 확인에 사용되는 경우 일반적으로 확인하려는 전체 문자열과 일치하도록 앞뒤에 ^ 및 $를 추가해야 합니다. 검색/바꾸기 시 이 제한을 추가할지 여부는 검색 요구 사항에 따라 다릅니다. ^ 및 $ 대신 b 앞뒤에 추가합니다. 이 표에 나열된 일반적으로 사용되는 정규식은 몇 가지를 제외하고는 어떤 제한도 따르지 않습니다. 필요에 따라 직접 처리하십시오.
우선주문
정규식을 구성한 후에는 수학적 표현식처럼 평가할 수 있습니다. 즉, 왼쪽에서 오른쪽으로 우선순위에 따라 평가할 수 있습니다. 다음 표에는 다양한 정규식 연산자의 우선순위가 가장 높은 것부터 가장 낮은 것 순으로 나열되어 있습니다.
操作符 | 描述 |
---|---|
转义符 | |
(), (?:), (?=), [] | 圆括号和方括号 |
*, , ?, {n}, {n,}, {n,m} | 限定符 |
^, $, anymetacharacter | 位置和顺序 |
정규 표현식 만들기
정규식을 구성하는 것은 수학 표현식을 만드는 것과 같습니다. 즉, 다양한 메타 문자와 연산자를 사용하여 작은 표현식을 결합하여 더 큰 표현식을 만듭니다.
정규식은 한 쌍의 구분 기호 사이에 표현식 패턴의 다양한 구성 요소를 배치하여 구성할 수 있습니다.
JScript의 경우 구분 기호는 슬래시(/) 문자 쌍입니다. 예:
/표현/
VBScript의 경우 따옴표 쌍("")을 사용하여 정규식의 경계를 결정합니다. 예:
예시를 살펴보겠습니다
var re =new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,19}$");
if(re.test(aaaa)){
Alert("올바른 형식");
}그밖에{
Alert("형식 오류");
}
정규식의 구성 요소는 단일 문자, 문자 모음, 문자 범위, 문자 간 선택 또는 이러한 모든 구성 요소의 조합일 수 있습니다.
자주 사용되는 정규식
한자와 일치하는 정규 표현식: [u4e00-u9fa5]
댓글: 중국어 매칭이 정말 머리아프네요. 이 표현을 사용하면 더 쉬울 것 같아요
2바이트 문자(한자 포함) 일치: [^x00-xff]
설명: 문자열 길이를 계산하는 데 사용할 수 있습니다. (2바이트 문자 길이는 2로 계산되고 ASCII 문자 길이는 1로 계산됩니다.)
빈 줄과 일치하는 정규식: ns*r
설명: 빈 줄을 삭제하는 데 사용할 수 있습니다
HTML 태그와 일치하는 정규 표현식: <(S*?)[^>]*>.*?1>|<.* />
댓글: 인터넷에 떠돌고 있는 버전이 너무 안좋습니다. 위의 버전은 일부만 일치할 수 있으며 복잡한 중첩 태그에는 여전히 무력합니다
선행 및 후행 공백 문자와 일치하는 정규식: ^s*|s*$
설명: 줄의 시작과 끝에서 공백 문자(공백, 탭, 폼 피드 등 포함)를 삭제하는 데 사용할 수 있습니다. 매우 유용한 표현입니다.
이메일 주소와 일치하는 정규식: w ([- .]w )*@w ([-.]w )*.w ([-.]w )*
댓글: 양식 유효성 검사에 매우 유용합니다
정규 표현식 일치 URL: [a-zA-z]://[^s]*
댓글: 인터넷에 유통되는 버전은 기능이 매우 제한되어 있습니다. 위의 버전은 기본적으로 요구 사항을 충족할 수 있습니다
일치하는 계정이 합법적입니까(문자로 시작, 5-16바이트 허용, 영숫자 밑줄 허용): ^[a-zA-Z][a-zA-Z0-9_]{4,15}$
댓글: 양식 유효성 검사에 매우 유용합니다
국내 전화번호 일치: d{3}-d{8}|d{4}-d{7}
댓글: 0511-4405222 또는 021-87888822와 같은 일치 형식
Tencent QQ 번호와 일치: [1-9][0-9]{4,}
댓글: Tencent QQ 계정은 10000부터 시작됩니다
중국 우편번호 일치: [1-9]d{5}(?!d)
댓글: 중국 우편번호는 6자리 숫자입니다
일치하는 신분증: d{15}|d{18}
댓글: 중국 신분증의 숫자는 15자리 또는 18자리입니다
IP 주소 일치: d .d .d .d
설명: IP 주소 추출 시 유용합니다
특정 숫자 일치
[복사] ^[1-9]d*$ // 양의 정수 일치
^-[1-9]d*$ // 음의 정수 일치
^-?[1-9]d*$ //정수 일치
^[1-9]d*|0$ // 음수가 아닌 정수 일치(양의 정수 0)
^-[1-9]d*|0$ // 양수가 아닌 정수 일치(음의 정수 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //양수 부동 소수점 숫자 일치
^-([1-9]d*.d*|0.d*[1-9]d*)$ //음수 부동 소수점 숫자 일치
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0 |0)$ // 부동 소수점 숫자 일치
^[1-9]d*.d*|0.d*[1-9]d*|0?.0 |0$ //음수가 아닌 부동 소수점 숫자와 일치합니다(양의 부동 소수점 숫자 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0 |0$ //양수가 아닌 부동 소수점 숫자와 일치합니다(음의 부동 소수점 숫자) 0)
코멘트: 대용량 데이터를 처리할 때 유용하며, 특별히 적용 시 수정에 주의해주세요
특정 문자열 일치
[copy]^[A-Za-z] $ //영문 26자로 구성된 문자열 매칭
^[A-Z] $ // 영문 대문자 26자로 구성된 문자열과 일치
^[a-z] $ // 영문 소문자 26자로 구성된 문자열과 일치
^[A-Za-z0-9] $ // 숫자와 영문 26자로 구성된 문자열과 일치
^w $ // 숫자, 영문 26자, 밑줄로 구성된 문자열과 일치
댓글: 가장 기본적이고 일반적으로 사용되는 표현
마인드맵