형제, 나는 최근에 JavaScript를 배웠고 정규 표현을 배울 때 지식 요점이 약간 지저분한 것을 보았으므로 그것을 요약하기 위해 블로그를 작성했습니다.
정의
JavaScript에서 Reg Exp를 정의하는 두 가지 방법이 있습니다.
1) 새로운 exp 사용 : var exp1 = new Exp ( "ABC");
2) 2 // 사이에 직접 패턴을 넣으십시오. var exp2 = /abc /; //메모. . 이중 인용문이 없으며 추가하면 문자열이됩니다.
특수 문자
시각적으로 특수 문자는 Perl과 동일합니다. . 직접 사용하십시오
/d 숫자 문자
/w 영숫자 문자 ( "단어 문자")
/s 공백 문자 (공간, 탭, Newline 및 유사)
/d 숫자가 아닌 문자
/w 비 알파늄 문자
/s 비 분사 문자
. 기간은 Newlines를 제외한 모든 캐릭터와 일치합니다
기억하는 매우 간단한 방법이 있습니다.
d = 숫자로 숫자입니다
w = 단어로 글자입니다
s = 공간이므로 공간입니다
모든 자본화는 역전됩니다. .
브래킷 []
괄호 안에 패턴을 넣는 것은 캐릭터가 일치하는 한 사실입니다. (Java 또는 Perl과 동일합니다)
예를 들어
코드 사본은 다음과 같습니다.
console.log (/[01]/. test ( "023424")); // 진실
console.log (/[01]/. test ( "13424")); // 진실
console.log (/[01]/. test ( "23424")); // 거짓
브래킷 ()
그것은 괄호 안의 모든 것이 사실이어야한다는 것을 의미합니다
예를 들어
코드 사본은 다음과 같습니다.
console.log (/[01]/. test ( "013424")); // 진실
console.log (/[01]/. test ( "13424")); // 거짓
console.log (/[01]/. test ( "230424")); // 거짓
console.log (/[01]/. test ( "230142401")); // 진실
수량 자
Java와 동일합니다. . 이 테이블은 아주 좋습니다. . 나는 항상 그것을 사용하는 것을 좋아했습니다
| 탐욕스러운 | 주저하는 | 소유 | 의미 |
|---|---|---|---|
| 엑스? | 엑스?? | x?+ | x, 한 번이든 전혀 |
| 엑스* | 엑스*? | x*+ | x, 0 이상 |
| x+ | x+? | x ++ | x, 한 번 이상 |
| x {n} | x {n}? | x {n}+ | x, 정확히 n 번 |
| x {n,} | x {n,}? | x {n,}+ | x, 적어도 n 번 |
| x {n, m} | x {n, m}? | x {n, m}+ | x, 적어도 n 이지만 m 회 이상은 아닙니다. |
표현 객체 기능
1) 테스트는 매우 간단합니다. 테스트에서 문자열을 테스트 할 수 있습니다 (...).이 함수는 true/false를 반환합니다.
2) exec,이 함수는 일치 문자열이 없으면 null을 반환합니다. 발견되면 배열이 반환됩니다. 여기에는 순서대로 일치 문자열이 포함되어 있습니다.
3) string.replace (expression1, string1)이 함수는 표현식의 일치 부분을 String1로 대체합니다. String1에서는 이전 표현식에서 괄호로 된 그룹을 사용할 수 있습니다.
, 그것의 일부를 교체합니다. 예를 들어, "co-ol".replace (/[/w] +/- [/w]+/, "$ 2- $ 1"); // "ol-co"는 $ 9까지 사용할 수 있습니다
4) string.replace (표현, 함수) 이것은 향상된 버전이며 매우 강력합니다. 기능을 통해 원하는 출력을 정의 할 수 있습니다. 특정 사용법은 여기에 나열되어 있지 않으며 참조하십시오.
링크를 열려면 클릭하십시오
REG 표현식을 동적으로 생성합니다
이 방법은 Reg Exp에서 무언가를 사용하려면 런타임에 대해서만 알고 싶을 때 적용 할 수 있습니다.
Reg Exp를 생성하려면 String을 사용하여 Reg Exp 룩을 만들고 Exp의 생성자를 사용하면됩니다. (기사의 시작시 언급)
예를 들어:
코드 사본은 다음과 같습니다.
var name = "dear"
"오, 내 사랑".Replace (New Exp (이름), "신"); // 맙소사
그러나 이름에 특수 문자가있는 경우 정규 표현식으로 사용될 수 있으며 위의 방법은 종종 오류가 발생합니다.
따라서이 경우 입력 문자열의 각 문자를 다음과 같은 백 슬래시로 접두사 할 수 있습니다.
코드 사본은 다음과 같습니다.
var name = df [] vxv;
var expname = name.replace ( "/[^/w/s]/g", "// $ &");
"내 이름은 df [] vxv".replace (new exp (name), "bob"); // 제 이름은 밥입니다