>  기사  >  웹 프론트엔드  >  자바스크립트 정규식 정의(문법)_자바스크립트 스킬 요약

자바스크립트 정규식 정의(문법)_자바스크립트 스킬 요약

WBOY
WBOY원래의
2016-05-16 15:21:05933검색

이 글에서는 자바스크립트 정규식 정의(문법)에 대해 설명합니다. 참고하실 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

정규식을 정의하는 방법에는 두 가지가 있습니다. 하나는 RegExp()를 직접 호출하는 것이고, 두 번째는 리터럴로 직접 정의하는 것, 즉 var re = /regular rule/;

두 정의 메소드 모두 본질적으로 RegExp() 메소드를 호출합니다

동일한 일반 코드를 호출하면 ECMAScript3과 ECMAScript5의 동작이 완전히 다릅니다

function reg(){
 var re = /\sjavascript/;
 return re;
}

ECMAScript3 및 ECMAScript5에서 각각 reg() 메서드를 여러 번 호출

ECMAScript3에서는 동일한 RegExp 객체가 호출되지만 ECMAScript5에서는 EXCMAScript5에서 실행될 때마다 새로운 RegExp 객체가 생성되기 때문에 다른 RegExp 객체가 호출됩니다

ECMAScript3의 프로그램에는 숨겨진 위험이 있습니다. 객체가 한 곳에서 수정되는 한 이 객체를 호출하는 모든 위치가 변경되기 때문입니다.

1. 직접 캐릭터

는 일반적으로

와 같은 정규 표현식의 문자와 직접 일치합니다.

/javascript/
문자 자바스크립트와 직접 일치합니다

은 다음과 같은 문자가 아닌 문자 일치도 지원합니다.

o NUL 문자(u0000)

t 탭 문자(u0009)

n 줄바꿈 문자(u000A)

v 세로 탭(u000B)

f 폼 피드 문자(u000C)

r 캐리지 리턴 문자(u000D)

xnn 16진수 nn으로 지정된 라틴 문자(예: x0A)는 다음과 같습니다.

uxxxx 16진수 xxxx로 지정된 유니코드 문자(예: u0009는

와 동일)

cX 제어 문자 ^X(예: cJ는 개행 문자 n과 동일함)

정규식에는 ''로 이스케이프 처리해야 하는 특별한 의미가 있는 구두점이 있습니다.

^$.* ?=!:|/()[]{}

2. 캐릭터 클래스

[...] 대괄호 안의 모든 문자

[^...] 대괄호 안에 없는 모든 문자

모든 문자

w [a-zA-Z0-9]에 해당하는 ASCII 문자로 구성된 모든 단어

W ASCII 문자로 구성되지 않은 모든 단어, [^a-zA-Z0-9]와 동일

모든 유니코드 공백

S 유니코드가 아닌 공백 문자, w와 S는 다릅니다

d [0-9]에 해당하는 모든 ASCII 값

D ASCII 숫자를 제외한 모든 문자, [^0-9]에 해당

[b] 백스페이스 리터럴(특수 사례)

3. 반복(횟수)

0~1회

1회 이상

* 횟수 제한 없음

{n}n회

{m,n} 최소 m회, 최대 n회

{n,}n회 이상

정규식의 기본 기본값은 탐욕적 일치

[a b ] 등 aaabb를 일치시키려면 ab, aab 등은 일치하지 않고 aaabb만 일치합니다

[a ?b ?] 이는 aaab와 일치합니다. 왜 이런 차이가 있나요?

답변: ? 일반적인 비탐욕 매칭을 만들어 보겠습니다. 그러면 b는 여기서 b 하나만 매칭하는데 왜 3이 매칭되나요? 이는 정규식 패턴 일치가 항상 문자열에서 가능한 첫 번째 일치 위치를 찾기 때문입니다.

4. 옵션 그룹화

|는 ab 또는 cd와 일치할 수 있는 [ab|cd]와 같은 선택적 문자를 구분하는 데 사용됩니다. 참고: : 선택한 항목에 대한 일치 시도 순서는 왼쪽 → 오른쪽입니다. [a|ab], a가 일치하면 ab가 더 잘 일치하더라도 ab는 일치하지 않습니다.

() 1. 개별 항목은 하위 표현식 /java(script)?/로 처리됩니다. javascript 및 java와 일치할 수 있습니다. 즉, 괄호 부분은 하위 표현식을 형성하고 하위 표현식에 대해 | * ? 및 기타 작업을 수행할 수 있습니다. >

2. 전체 패턴에서 하위 패턴을 정의합니다. 후자는 괄호로 묶인 표현식을 참조할 수 있습니다. /(['"])[a-z]1/ 1은 첫 번째 괄호 안의 표현식을 참조하므로 [ '"]

3. 뒤에서 이전 하위 표현식을 참조하세요

참고: /['"][a-z]['"]/ 이 정규 표현식은 작은따옴표 또는 큰따옴표와 소문자 및 이전 단일을 의미합니다. 따옴표 또는 큰따옴표가 일치하지 않으며 앞뒤의 작은따옴표와 큰따옴표가 일치하지 않는 경우에는 [(['"])[a-z]1] 와 같이 쓰면 됩니다.

숫자 추가하기 앞의 괄호 안의 표현을 인용해도 됩니다

5. 일치 위치 지정(앵커 포인트)

^ 문자열의 시작과 일치합니다. 여러 줄 검색에서는 줄의 시작과 일치합니다.

$ 문자열의 끝과 일치합니다. 여러 줄 검색에서는 줄의 끝과 일치합니다.

b 단어의 경계와 일치합니다. 즉, 문자 w와 W 사이의 위치 또는 문자 w와 문자열의 시작 또는 끝 사이의 위치입니다.

B 비단어 경계 위치와 일치

(?=p) 너비가 0인 전방 예측 어설션에서는 다음 문자가 p와 일치해야 하지만 p와 일치하는 문자는 포함할 수 없습니다.

(?!p) 너비가 0인 부정 예측 어설션에서는 다음 문자가 p와 일치하지 않아야 합니다

6. 수식어

은 정규식 리터럴 오른쪽에 // 작성됩니다.

대소문자를 구분하지 않는 일치를 수행합니다

g는 글로벌 일치를 수행합니다. 즉, 첫 번째 일치 항목을 찾은 후 중지하는 대신 모든 일치 항목을 찾습니다.

m 여러 줄 일치 패턴, ^는 줄의 시작과 문자열의 시작과 일치, $는 줄의 끝과 문자열의 끝과 일치 /java$/m은 javanfunc와 일치할 수 있음

참고: 정규 표현식이 전역인 경우 exec() 및 test()가 실행될 때마다 현재 설정된 lastIndex가 현재 위치로 설정되므로 lastIndex 위치부터 실행이 시작됩니다. 실행될 때마다 lastIndex를 0으로 설정하는 것이 가장 좋습니다.

이 기사가 JavaScript 프로그래밍에 종사하는 모든 사람에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.