JavaScript에서 정규식을 정의하는 두 가지 방법이 있습니다.
1. 레지 렉스 생성자
var pattern = new regexp ( "[bc] at", "i");
두 개의 매개 변수를 수신합니다. 하나는 일치하는 문자열 패턴이고 다른 하나는 옵션 플래그 문자열입니다.
2. 문자
var pattern = /[bc] at /i;
정규 표현식의 일치 패턴은 세 가지 플래그 문자열을 지원합니다.
G : 첫 번째 일치를 검색 할 때 검색을 중지하는 대신 모든 문자열에 적용되는 글로벌, 글로벌 검색 모드;
I : Ingore Case, 문자 케이스를 무시하십시오. 즉, 일치를 결정할 때 패턴 및 문자열 케이스를 무시합니다.
M : 여러 줄, 멀티 린 패턴, 즉 검색이 텍스트 줄의 끝에 도달하면 다음 줄에 일치하는지 여부를 계속 찾습니다.
정규 표현식을 생성하는이 두 가지 방법의 차이점은 정규 표현식 문자가 항상 동일한 regexp 인스턴스를 공유하며 생성자를 사용하여 생성 된 각 새로운 regexp 인스턴스는 새로운 인스턴스라는 것입니다.
Metacharacter
Metacharacters는 특별한 의미를 가진 캐릭터입니다. 정규 표현의 주요 메타 카라 터는 다음과 같습니다.
([{ / ^ $ |)? * +.
Metachars는 다른 조합에서 다른 의미를 갖습니다.
사전 정의 된 특수 문자
캐릭터 클래스 간단한 클래스
일반적으로 정규 표현식에는 문자열의 문자에 해당하는 문자가 있지만 []를 사용하여 간단한 클래스를 만들어 특정 기능과 일치하는 문자 클래스를 나타냅니다. 예를 들어:
[ABC]는 괄호 A, B, C 또는 그 조합의 문자와 일치 할 수 있습니다.
리버스 클래스
[]는 클래스를 구축 할 수 있으므로 자연스럽게 괄호 안에 내용을 포함하지 않는 해당 클래스를 생각합니다. 이 클래스를 리버스 클래스라고합니다. 예를 들어, [^abc]는 A 또는 B 또는 C가 아닌 문자와 일치 할 수 있습니다.
범위 범주
때로는 문자를 하나씩 일치시키기에는 너무 번거 롭고 경기 유형은 동일합니다. 현재 "-"연결 라인을 사용하여 특정 폐쇄 간격 사이의 내용을 나타낼 수 있습니다. 예를 들어, 모든 소문자와 일치하는 것은 다음과 같이 [AZ]를 사용할 수 있습니다.
모두 0-9를 일치시키는 것은 [0-9]를 사용하여 표현할 수 있습니다.
사전 정의 된 클래스
위에서 우리가 만든 여러 클래스의 경우 일반 표현식은 다음과 같이 공통 문자와 일치하는 몇 가지 일반적으로 사용되는 사전 정의 된 클래스를 제공합니다.
| 성격 | 동등한 카테고리 | 의미 |
| . | [^/n/r] | 캐리지 리턴 및 라인 브레이크를 제외한 모든 문자를 일치시킵니다 |
| /디 | [0-9] | 숫자 문자 |
| /디 | [^0-9] | 수치가 아닌 문자 |
| /에스 | [/t/n/x0b/f/r] | 공백 문자 |
| /에스 | [^/t/n/x0b/f/r] | 비 윈 스페이스 문자 |
| /w | [A-Za-Z_0-9] | 단어 문자 (글자, 숫자 및 밑줄) |
| /w | [^a-za-z_0-9] | 비 단어 문자 |
수량 자
위의 방법은 문자와 일치합니다. 캐릭터가 연속적으로 여러 번 나타나면 위의 방법에 따라 일치하는 것이 매우 번거 롭습니다. 따라서 반복적으로 나타나는 문자와 직접 일치 할 수있는 다른 방법이 있는지 궁금합니다. 정규 표현식은 다음과 같이 일부 정량자를 제공합니다.
| 성격 | 의미 |
| ? | 0 또는 한 번 (최대 한 번) |
| + | 한 번 이상 나타납니다 (적어도 한 번) |
| * | 0 또는 다중 발생 (언제든지) |
| {N} | n 번 나타납니다 |
| {n, m} | n으로 나타납니다 |
| {N,} | 적어도 n 번 나타납니다 |
욕심과 비 게리 모드
{n, m}의 일치하는 방법의 경우 n 또는 m을 일치시켜야합니까? 여기에는 패턴 일치 문제가 포함됩니다. 기본적으로 정량화는 가능한 한 많은 일치하는 문자이며, 예를 들어 욕심 많은 모드라고합니다.
var num = '123456789'; num.match (// d {2,4}/g); // [1234], [5678], [9]오른쪽 및 비 게리 모드의 경우 "?"만 추가하면됩니다. 정량 자 후. 예를 들어, {n, m}?, 그것은 다음과 같이 최소 문자와 일치하는 것입니다.
var num = '123456789'; num.match (// d {2,4}?/g); // [12], [34], [56], [78], [9]그룹화
수량자는 단일 문자에 대해서만 여러 번 일치 할 수 있습니다. 특정 문자 세트와 여러 번 일치하려면 어떻게해야합니까? 정기적 인 표현식에서 괄호는 문자열을 그룹으로 전체적으로 정의 할 수 있습니다.
우리가 Apple이라는 단어와 4 번 나타나고 싶다면 다음과 같이 다음과 같이 (Apple) {4} 일치 할 수 있습니다.
Apple 또는 Orange와 4 번 나타나려면 파이프 문자 "|"를 삽입 할 수 있습니다.
(사과 | 오렌지) {4}
그룹화, 즉 여러 그룹을 사용하여 여러 개의 괄호가 정규식으로 나타나면 일치하는 결과는 예를 들어 일치하는 것도 그룹화하고 번호를 매 깁니다.
(사과)/d+(오렌지)
특정 패킷을 캡처하지 않으려면 패킷의 괄호 앞에서 물음표와 결장을 따라야합니다.
(? : Apple)/d+(오렌지)
경계
정규 표현식은 또한 일반적으로 사용되는 여러 경계 일치 문자를 제공합니다.
| 성격 | 의미 |
| ^ | xx로 시작하십시오 |
| $ | xx로 끝납니다 |
| /비 | [a-za-z_0-9] 이외의 문자를 언급하는 단어 경계. |
| /비 | 비 단어 경계 |
경계라는 단어는 위치와 일치 하고이 위치의 한쪽은 단어를 구성하는 문자이지만 다른 쪽은 비 단어 문자 또는 문자열의 시작 또는 끝 위치입니다.
시사
Lookahead는 특정 문자 세트의 다음 발생 여부와 일치하는 데 사용됩니다.
| 표현 | 의미 |
| exp1 (? = exp2) | 경기는 Exp2의 Exp1이 뒤 따릅니다 |
| exp1 (?! exp2) | 나중에 Exp2가 아닌 Exp1을 일치시킵니다 |
예를 참조하십시오 :
사과 (? = 오렌지)
(/Apple(?=orange)/).test ( 'Appleorange123'); // true (/apple(?=orange)/).test ( 'Applepear345'); //거짓
다른 예를 살펴 보겠습니다.
애플 (?! 오렌지)
(/Apple(?! ORANGE)/).test ( 'Appleorange123'); // false (/apple(?! orange)/).test ( 'Applepear345'); //진실
위의 기사는 JavaScript 정규식 구문에 대한 진부한 것입니다. 이것은 내가 당신과 공유하는 모든 콘텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.