>웹 프론트엔드 >JS 튜토리얼 >JS Regular_javascript 기술의 RegExp 객체 객체

JS Regular_javascript 기술의 RegExp 객체 객체

WBOY
WBOY원래의
2016-05-16 17:48:361077검색

RegExp 개체의 인스턴스를 만드는 방법에는 두 가지가 있습니다.

RegExp의 명시적 생성자를 사용합니다. 구문은 new RegExp("pattern"[,"flags"])입니다.
RegExp의 암시적 생성자를 일반 텍스트 형식으로 사용합니다: /pattern/[flags].

패턴 부분은 사용할 정규식 패턴 텍스트이며 필수입니다. 첫 번째 방법에서는 패턴 부분이 JavaScript 문자열 형식으로 존재하며 큰따옴표 또는 작은따옴표로 묶어야 합니다. 두 번째 방법에서는 패턴 부분이 두 개의 "/" 사이에 중첩되어 따옴표를 사용할 수 없습니다. .

flags 부분은 정규식의 플래그 정보를 설정하는 부분으로 선택사항입니다. 플래그 부분이 설정된 경우 첫 번째 방법은 문자열 형식으로 존재하고 두 번째 방법은 마지막 "/" 문자 바로 뒤에 텍스트 형식으로 존재합니다. 플래그는 다음 플래그 문자의 조합일 수 있습니다.
g는 글로벌 플래그입니다. 이 플래그가 설정된 경우 텍스트에 대한 검색 및 바꾸기 작업은 텍스트의 일치하는 모든 부분에 영향을 미칩니다. 이 플래그를 설정하지 않으면 가장 먼저 일치하는 항목만 검색하여 교체합니다.

i는 대소문자 무시 플래그입니다. 이 플래그가 설정되면 일치 비교를 수행할 때 대소문자가 무시됩니다.

m은 여러 줄로 구성된 플래그입니다. 이 플래그가 설정되지 않은 경우 메타 문자 "^"는 검색된 전체 문자열의 시작 부분에만 일치하고, 메타 문자 "$"는 검색된 문자열의 끝 부분에만 일치합니다. 이 플래그가 설정되면 "^"도 "와 결합될 수 있습니다. "또는" "는 다음 위치(즉, 다음 줄의 시작 부분)와 일치하며, "$"도 "와 일치할 수 있습니다. "또는" "는 "(즉, 다음 줄의 끝)과 일치합니다.

코드 1.1은 정규식 생성의 예입니다.
코드 1.1 정규식 생성: 1.1.htm

코드 복사 코드는 다음과 같습니다.

;head>
정규식 만들기

;



위 코드의 실행 결과는 그림 8.1에 나와 있습니다.
JavaScript 문자열의 ""는 이스케이프 문자이므로 명시적으로 사용하세요. 생성자는 RegExp 인스턴스 개체를 생성하므로 원래 정규식의 ""는 ""로 바뀌어야 합니다. 예를 들어 코드 1.2의 두 문은 동일합니다.
코드 1.2의 ""는 이스케이프됩니다.




코드 복사
코드는 다음과 같습니다.


정규식 패턴 텍스트의 이스케이프 문자도 ""이므로 정규식에서 리터럴 문자 ""를 일치시키려면 명시적 사용 시 정규식 패턴 텍스트에서 ""로 표시해야 합니다. 생성 함수를 사용하여 RegExp 인스턴스 객체를 생성할 때 리터럴 문자 ""를 나타내기 위해 "\"를 사용해야 합니다.
var re = 새 RegExp(\\).

1 RegExp 개체의 속성

RegExp 개체의 속성은 정적 속성과 인스턴스 속성으로 구분됩니다. 아래에 별도로 소개합니다.

1.1 정적 속성
(1) 인덱스 속성. 현재 표현 패턴의 첫 번째 일치 내용의 시작 위치이며 0부터 계산됩니다. 초기값은 -1이며, 일치가 성공할 때마다 인덱스 속성이 그에 따라 변경됩니다.
(2) 입력 속성. $_로 축약될 수 있는 현재 작업 중인 문자열을 반환하며 초기 값은 빈 문자열 ""입니다.
(3)lastIndex 속성. 현재 표현 패턴이 처음으로 일치하는 내용의 마지막 문자의 다음 위치입니다. 0부터 계산이 시작됩니다. 검색을 계속할 때 시작 위치로 자주 사용됩니다. 초기 값은 -1이며, 이는 검색을 의미합니다. 시작 위치부터 시작하며, 일치할 때마다 lastIndex 속성 값이 그에 따라 변경됩니다.
(4)lastMatch 속성. $&로 축약할 수 있는 현재 표현식 패턴의 마지막 일치 문자열입니다. 초기값은 빈 문자열 ""입니다. lastMatch 속성의 값은 일치가 성공할 때마다 변경됩니다.
(5)lastParen 속성. 표현식 패턴에 포함된 부분 일치가 있는 경우 이는 현재 표현식 패턴의 마지막 부분 일치와 일치하는 부분 문자열이며 $로 축약할 수 있습니다. 초기값은 빈 문자열 ""입니다. lastParen 속성의 값은 일치가 성공할 때마다 변경됩니다.
(6) leftContext 속성. 이는 현재 표현식 패턴에서 마지막으로 일치하는 문자열 왼쪽에 있는 모든 것입니다. $`로 축약할 수 있습니다(여기서 "'"는 키보드의 "Esc" 아래에 있는 역따옴표 표시입니다). 초기값은 빈 문자열 ""입니다. 일치가 성공할 때마다 해당 속성 값이 변경됩니다.
(7) rightContext 속성. 현재 표현식 패턴에서 마지막으로 일치하는 문자열의 오른쪽에 있는 모든 항목이며 $'로 축약할 수 있습니다. 초기값은 빈 문자열 ""입니다. 일치가 성공할 때마다 해당 속성 값이 변경됩니다.
(8) $1…$9 속성. 이러한 속성은 읽기 전용입니다. 표현식 패턴에 포함된 부분 일치가 있는 경우 $1...$9 속성 값은 각각 첫 번째부터 아홉 번째 부분 일치에 의해 캡처된 내용입니다. 하위 일치 항목이 9개보다 많은 경우 $1...$9 속성은 각각 마지막 9개 하위 일치 항목에 해당합니다. 표현식 패턴에서는 괄호로 묶인 부분 일치 항목을 원하는 만큼 지정할 수 있지만 RegExp 개체는 마지막 9개 부분 일치 항목의 결과만 저장할 수 있습니다. RegExp 인스턴스 개체의 일부 메서드에서 반환된 결과 배열에서 괄호 안의 모든 부분 일치 결과를 얻을 수 있습니다.

1.2 인스턴스 속성

(1) 전역 속성. RegExp 개체 인스턴스를 생성할 때 지정된 전역 플래그(g)의 상태를 반환합니다. RegExp 객체 인스턴스를 생성할 때 g 플래그가 설정되면 이 속성은 True를 반환하고, 그렇지 않으면 기본값은 False를 반환합니다.
(2)Case 속성을 무시합니다. RegExp 객체 인스턴스를 생성할 때 지정된ignoreCase 플래그(i)의 상태를 반환합니다. RegExp 객체 인스턴스를 생성할 때 i 플래그가 설정되면 이 속성은 True를 반환하고, 그렇지 않으면 기본값은 False를 반환합니다.
(3) multiLine 속성. RegExp 객체 인스턴스를 생성할 때 지정된 multiLine 플래그(m)의 상태를 반환합니다. RegExp 개체 인스턴스를 생성할 때 m 플래그가 설정되면 이 속성은 True를 반환하고, 그렇지 않으면 기본값은 False를 반환합니다.
(4) 소스 속성. RegExp 개체 인스턴스를 생성할 때 지정된 식 텍스트 문자열을 반환합니다.

JS의 RegExp 개체(2)

2 RegExp 개체의 메서드
RegExp 개체의 일반적인 메서드에는 test, exec 및 compile이 포함됩니다. , 이 섹션에서는 이러한 메서드의 기능과 사용법을 소개합니다. 마지막으로 RegExp 개체의 속성과 메서드에 대한 포괄적인 예가 제공됩니다.
2.1 테스트 방법
구문 형식은 test(str)입니다. RegExp 객체 인스턴스를 생성할 때 지정한 표현식 패턴이 문자열에 존재하는지 확인하여 존재하면 True를 반환하고, 존재하지 않으면 False를 반환하는 메서드입니다. 일치하는 항목이 발견되면 RegExp 개체의 관련 정적 속성이 업데이트되어 일치 항목을 반영합니다.
2.2 exec 메소드
구문 형식은 exec(str)입니다. 이 메서드는 RegExp 개체 인스턴스를 생성할 때 지정된 표현식 패턴을 사용하여 문자열을 검색하고 검색 결과가 포함된 배열을 반환합니다.
정규식에 전역 플래그(g)가 설정된 경우 exec 및 테스트 메서드를 여러 번 호출하여 문자열에서 연속 검색을 수행할 수 있으며, 매번 lastIndex에서 지정한 위치에서 문자 검색을 시작할 수 있습니다. RegExp 개체 문자열의 속성 값입니다.
전역 플래그(g)가 설정되지 않은 경우 exec 및 테스트 메서드는 RegExp 개체의 lastIndex 속성 값을 무시하고 문자열의 처음부터 검색을 시작합니다.
exec 메서드가 일치 항목을 찾지 못한 경우 반환 값은 null입니다. 일치 항목이 발견되면 배열이 반환되고 RegExp 개체의 관련 정적 속성이 일치 항목을 반영하도록 업데이트됩니다. 반환된 배열의 요소 0에는 완전한 일치 결과가 포함되고, 요소 1~n은 표현식 패턴에 정의된 각 부분 일치의 결과입니다.
exec 메소드에 의해 반환된 배열에는 input, index 및 lastIndex라는 세 가지 속성이 있습니다.
입력 속성은 검색되는 전체 문자열입니다.
index 속성은 검색된 문자열 전체에서 일치하는 위치를 나타냅니다.
lastIndex 속성은 일치하는 하위 문자열의 마지막 문자 옆에 있는 문자 위치를 나타냅니다.
코드 2.1은 이 방법을 적용한 예입니다.
코드 2.1 exec() 메소드 적용: 2.1.htm
코드 복사 코드는 다음과 같습니다.



exec() 메소드 애플리케이션<br>var myString="aaa 111 bbb 222 ccc 1111 222ddd"; <br>var regex = /111/; //정규 표현식 객체 생성<br>var array=regex.exec(myString) <br>if (array ){ <br>var str="일치하는 하위 문자열을 찾았습니다!" "n반환된 배열의 값:" array "n배열 요소 수:" <br> array.length "n검색된 문자열은 다음과 같습니다:" array. > "n개의 일치하는 하위 문자열의 시작 위치:" array.index <br> "n개의 일치하는 하위 문자열 뒤의 첫 번째 문자 위치:" regex.lastIndex <br>alert(str); >else{ <br>alert("일치하는 하위 문자열이 없습니다!!") <br></script> <br><body></body> <br><br> <br><br>2.3 컴파일 방법 <br><br><br>구문 형식은 compile("pattern"[,"flags"])입니다. 이 메서드는 RegExp 개체 인스턴스에서 사용하는 식 패턴을 대체하고 새 식 패턴을 내부 형식으로 컴파일하여 후속 일치 프로세스를 더 빠르게 만듭니다. 표현식을 루프에서 재사용하려는 경우 이를 컴파일하면 실행 속도가 빨라집니다. 그러나 프로그램에서 다른 표현식 패턴이 사용된 후에 원래 컴파일된 표현식 패턴이 사용되는 경우에는 이러한 컴파일의 이점이 없습니다.

2.4 종합 예시

Code 2.2는 RegExp 개체의 종합 예시이며 코드와 해당 작업 결과를 주의 깊게 분석하면 RegExp 개체를 더 잘 이해하는 데 도움이 됩니다.
코드 2.2 RegExp 객체 사용법: 2.2.htm


코드 복사

코드는 다음과 같습니다.