English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

RegExp 일기 JavaScript RegExp 객체

개요

RegExp의 생성자는 텍스트를 일치시키기 위해 패턴을 사용한 정규 표현식 객체를 생성합니다.

정규 표현식에 대한 소개는 JavaScript 가이드의 정규 표현식 장을 참조하세요.

문법

문자와 생성 기호는 가능합니다:
/pattern/flags new RegExp(pattern [, flags])

매개변수

pattern
정규 표현식의 텍스트
flags
지정된 경우, 플래그는 다음 값의 조합 중 어느 것인가를 가질 수 있습니다:

g
전체 일치
i
대소문자 무시
m
다중 줄; 시작과 끝 문자(^와 $)는 다중 줄 모드에서 작동하여(예를 들어, ^와 $는 각 행의 시작과 끝에 일치할 수 있으며, 이나 로 분리된 행에 대해, 전체 입력 문자열의 시작과 끝에만 일치하지 않습니다).
u
Unicode. 패턴을 Unicode 코드 포인트(code points)의 시퀀스로 간주합니다.
y
黏度; 목표 문자열에서 정규 표현식의 lastIndex 속성이 지정한 위치에서만 일치시킵니다(그리고 그 이후의 인덱스에서 일치시키려고 시도하지 않습니다).
설명
정규 표현식 객체를 생성하는 방법은 두 가지가 있습니다: 문자面上的 형식과 생성자. 문자열을 표현할 때, 문자面上的 형식은 따옴표를 사용하지 않으며, 생성자에 전달하는 매개변수는 따옴표를 사용합니다. 다음 표현식은 동일한 정규 표현식을 생성합니다:

/ab+c/i;
new RegExp('ab+c', 'i');
new RegExp(/ab+c/, 'i');

표현식이 할당될 때, 문자面上的 형식은 정규 표현식의 컴파일(컴파일) 상태를 제공하며, 정규 표현식이 상수로 유지될 때 사용됩니다. 예를 들어, 반복문에서 문자面上的 형식으로 정규 표현식을 구성할 때, 정규 표현식은 매번 반복에서 다시 컴파일(재컴파일)되지 않습니다.
정규 표현식 객체 생성자, 예를 들어 new RegExp('ab}}+c')은 정규 표현식 실행 시간 컴파일(runtime compilation)을 제공합니다. 정규 표현식 패턴이 변경될 것을 알거나, 사전에 어떤 패턴을 알지 못하고 다른 출처에서 가져올 것을 알 때, 이러한 생성자를 사용할 수 있습니다.
ECMAScript 6시작, 첫 번째 매개변수가 정규 표현식이고 두 번째 기호 매개변수가 존재할 때, new RegExp("/ab+c/, 'i')는 TypeError(“다른 정규 표현식에서 생성할 때 지원되지 않는 기호”)의 예외를 발생시키지 않고, 대신 이러한 매개변수를 사용하여 새로운 정규 표현식을 생성합니다.

정규 표현식 객체 생성자를 사용할 때, 일반적인 문자 escaping 규칙(앞에 반대쌍 문자 "\\"를 추가)이 필요합니다. 예를 들어, 다음과 같습니다:

var re = new RegExp("\\w+");
var re = /\w+/;

문자面上的 값으로 정규 표현식 정의
var expression = /pattern/ flags;
pattern: 부분은 어떤 간단한 또는 복잡한 정규 표현식이든 될 수 있습니다
flag: 정규 표현식의 행동을 지시 1.g: 전체 모드, 첫 번째 매칭 후 멈추지 않음 2.i: 대소문자 구분하지 않는 모드 3.m: 다중 줄 모드
예:

var pattern1 = /at/g; //문자열 내 모든 "at" 매칭
var pattern2 = /.valueOf());/i; //첫 번째 "bat" 또는 "cat" 매칭, 대소문자 구분하지 않음
var pattern3 = /.at/gi; //마지막 문자로 "@at"이 끝나는 세 개의 문자를 전체 매칭. 대소문자 구분하지 않음

모드에서 사용된 모든 원자문자는 escaping이 필요합니다. 정규 표현식의 원자문자는 다음과 같습니다:([{\^$|?*+.}])
예:

var pattern4 = /\[bc\]at/i; //첫 번째 "[bc]at" 매칭, 대소문자 구분하지 않음

RegExp 생성자를 사용하여, 매개변수를 받습니다2개 매개변수, 매개변수1: 매칭할 문자열 패턴, 매개변수2: 선택적인 기호 행동
예:

var pattern5 = new RegExp("[bc]at", "i");

주의: RegExp 생성자의 패턴 매개변수는 모두 문자열이기 때문에, 일부 경우 문자열에 대해 이중 escaping이 필요합니다. 모든 원자문자는 이중 escaping이 필요합니다

예:
문자面上的 값        동일한 문자열
/\[bc\]at/      \"\\[bc\\]at"
/\\.at/        \"\\.at"
/name/\age/    \"name\\/age"
/\d.\d{1,2}/    \d.\\d{1,2\"
/\w\\hello\\123/ \w\\hello\\123"

"}}3주의: 리터럴과 인스턴스화를 통해 정규 표현식을 생성하는 것은 다릅니다. 리터럴은 항상 동일한 RegExp 인스턴스를 공유합니다(ECMAScript

)。구조 함수를 사용하여 생성된 각 새로운 RegExp 인스턴스는 새로운 인스턴스입니다.

console.log(pattern5RegExp 인스턴스 속성 //.global);
console.log(pattern5false g 기호가 설정되었는지 여부 //.ignoreCase);
console.log(pattern5true i 기호가 설정되었는지 여부 //.multiline);
console.log(pattern5false m 기호가 설정되었는지 여부 //.lastIndex);
console.log(pattern50 다음 일치 항목을 검색하기 시작하는 위치 //.source);

[bc]at 정규 표현식의 문자열 표현

console.log(pattern5thừa kế thuộc tính // /.valueOf());/[bc]at 정규 표현식의 문자열 표현
console.log(pattern5.toString()); // /.valueOf());/[bc]at 정규 표현식의 문자열 표현
console.log(pattern5.toLocaleString()); // /.valueOf());/[bc]at 정규 표현식의 문자열 표현

i 정규 표현식의 리터럴 표현
RegExp 인스턴스 메서드

메서드 하나 번째: exec(), 매개변수를 받아서 모델 문자열을 적용합니다. 첫 번째 일치 항목 정보를 포함한 배열을 반환하고, 일치 항목이 없으면 null을 반환합니다. 반환된 배열 인스턴스는 두 가지 속성을 포함합니다: index(일치 항목이 문자열 내의 위치)와 input(정규 표현식을 적용한 문자열)입니다.
var pattern6 var text = "huang jin liang shi ge hao ren";63= new RegExp("huang( jin liAng( shi ge hao ren)?)&#
;", "i");6var matches = pattern
.exec(text); 
//console.log(matches);
// [ 'huang jin liang shi ge hao ren',
// 'jin liang shi ge hao ren',
// 'shi ge hao ren',
// index: 0,
메서드 두 번째: test(), 매개변수를 받아서 모델 문자열을 적용합니다. 이 모델이 매개변수와 일치하면 true를 반환하고, 그렇지 않으면 false를 반환합니다1 입력: 'huang jin liang shi ge hao ren' ]
var pattern7 = "cat, bat, sat";
sat1 var matches7= pattern1);
.exec(text1); //= new RegExp(".at", "gm");
var pattern8 = new RegExp(".at")
sat2 var matches8= pattern1);
.exec(text2); //= new RegExp(".at", "gm");
sat3 var matches8= pattern1);
.exec(text3); //cat
sat4 var matches8= pattern1);
.exec(text4); //bat
sat5 var matches8= pattern1);
.exec(text5); //console.log(matches

null

메서드 두 번째: test(), 매개변수를 받아서 모델 문자열을 적용합니다. 이 모델이 매개변수와 일치하면 true를 반환하고, 그렇지 않으면 false를 반환합니다2 = "000-00-0000";
var pattern9 = new RegExp("\\d{3}-\\d{2}-\\d{4});
console.log(pattern9.test(text2))
console.log(text2);
if (pattern9.test(text2)) {
console.log("매칭 성공");
} else {
console.log("매칭 실패");
}

구조 함수 속성(일부 브라우저에서 지원되지 않을 수 있습니다)
긴 속성 이름    짧은 속성 이름 설명
input      $_    최근一次 매칭해야 할 문자열
lastMatch    $&    최근一次 매칭 항목
lastParen    $+    최근一次 캡처 그룹
leftContext    $`    input 문자열에서 lastMatch 이전의 텍스트
multiline    $*    boolean, 여러 행 모드인지 여부
rightContext $'    input 문자열에서 lastMatch 이후의 텍스트
        $1~$9 각각이 몇 번째 캡처 그룹을 저장하는 데 사용됩니다

ECMAScript 제한성에서
1. 문자열 시작과 끝의 \A와 \Z 앵커를 매칭
2. 후행 검색
3. 합집합과 교집합 클래스
4. 원자 그룹
5. Unicode 지원(단일 문자를 제외하고)
6. 이름 지정된 캡처 그룹
7. s와 x 매칭 모드
8. 조건 매칭
9. 정규 표현식 주석

js에서 다중 행을 매칭하는 방법을 최근에 발견했습니다

<script>
var s = "Please yes\nmake my day!";
alert(s.match(/yes.*day/));
// null을 반환합니다
alert(s.match(/yes[^]*day/));
// 'yes\nmake my day'를 반환합니다
</script>

죄송합니다, editplus를 사용할 수 없습니다. 많은 경우 dw를 사용하는 것이 더 편리합니다.

좋아할 것 같은 것