정규 표현식 : 정규식
정규 표현식은 캡처와 같은 테스트 () 검증을 위해, 또한 사용할 수 있습니다 일치 (), 간부 인 ()를 사용할 수있다
STR =은 "좋은 좋은 학문, 일 일 위로!"하자 , (가) REG하자 = / \ D + /; // 디지털이 있는지 확인 , reg.test (STR) // => 거짓 STR = "2019년 10월 1일" ; reg.exec (STR); // => [ "2019", 인덱스 0, 입력 "원래 문자열"]
1. 쓰기 정규 표현식
만드는 방법은 두 가지가 있습니다 :
// => 실시 리터럴 생성 (두 슬래쉬 사이의 랩은 규칙 메타 문자 설명하는 데 사용된다) = / \ D + / 송출 된 REG1 ; // => 모드 생성자는 두 개의 매개 변수를 생성한다 : 요소 문자열, 문자열 규정 송출의 REG2 = 새 새 정규 표현식 ( "\\ + D");
정규 표현식은 두 부분으로 구성 메타 문자 및 수정
위안 문자 :
한정 기호 메타 문자 : 발생 횟수를 설정합니다
* // 여러 제로가 + // 복수 회 ? // 영 또는이 {N} //이 N 회 발생 {n은} //이 를 N 회 발생 {N, m은} // N에 나타나는 m 번
특수 문자 요소 : 단일 또는 함께 조합은 특별한 의미를 나타냅니다
\ // 탈출 문자 (일반 -> 스페셜 -> 일반) . // \ n보다 (줄 바꿈)를 제외한 모든 문자의 ^ // 되는 메타 문자로 시작하는 $ // 마지막으로 메타 문자있는 상태를 \ N- // 개행 \ D // 0 ~ 9의 숫자 \ D // 0 ~ 9까지의 숫자, 비 (대소가 반대 의미) \ W // 숫자, 문자, 밑줄 하나 개의 문자 \의 S // (공백, 탭, 폼 피드 등 포함) 공백 문자는 \ T // 탭 문자 (A TAB 키 : 네 개의 공간) \의 B //는 단어 경계와 일치 X | Y는 // 는 x 또는 y의 문자 [XYZ] // X 또는 Y 또는 Z 것은의 문자 [^는 XY] // X / Y를 제외한 문자 [AZ] //이 이 범위 AZ 모든 문자를 지정할 [0-9A-ZA-는 Z _] === \ W [^ AZ] // 하나 부정 "가 아닌" () // 일반 그룹 기호가에 (? : // 촬영에서 일치하지 않음 (? =) // 긍정적 인 사전 조사 (?!) // 부정적인 사전 확인
공통 메타 : 자체의 의미를 대신하여
/여보세요 / // 정규 경기는 "안녕하세요"입니다
둘째, 수정 :
/ * 정규식 개질제는 일반적으로 사용 : IMG * / I =>을하여 ignoreCase // 무시 단어 경우 매치 m을 => 여러 줄 // 여러 매칭 될 수 G => 글로벌 // 글로벌 매칭 /A/.test ( ' 랄랄라 ') => false로 /A/i.test('lalala') => true로
자세한 응용 프로그램의 메타 문자
^ $
REG 송출 = / ^ \의 D / ; 을 console.log (reg.test ( "안녕하세요")); // => false로 을 console.log (reg.test ( "2019hello")); // => true로 을 console.log (reg.test ( "hello2019")); // => false로 송출 REG = / \ D의 $ / ; 을 console.log (reg.test ( "안녕하세요")); // => false로 을 console.log (REG. 테스트 ( "2019hello")); // => false로 을 console.log (reg.test ( "hello2019")); // => true로 // => 추가하지 ^ / $ 2 : 문자열을 준수 에 대한 규칙의 내용 송출의 REG1 = / \ D + / ; // =>문자열과 수는 규칙의 내용과 일치 : ^ / $ 플러스 둘은 $ /를하자 REG2 = / ^ \ D + ; //=> 예 : 검증 전화 번호 (11 비트, 상기 제 1 수는있다) 송출 REG = / ^ 1 \ {D} $ 10 /;
\
REG = /^2.3$/ 송출 , 을 console.log (reg.test ( "2.3")); // => true로 을 console.log (reg.test () "2. 3 @"); // => true로 콘솔 .LOG (reg.test ( "23")); // => 거짓 // => 만 소수점 표현 허용 제어 문자에 기초 REG를 /^2\.3$/ = ; CONSOLE.LOG (REG. 테스트 ( "2.3")); // => true로 을 console.log (reg.test ( "2. 3 @")); // => false로 송출 STR = "\\ D" , REG = / ^ \ $ D /; // => \ D 0-9 대표 CONSOLE.LOG (reg.test (STR)); // = "false로 REG = / ^ $ \\의 D /; // => 특별 일반 변환 준수 CONSOLE.LOG (reg.test (STR)); // => 사실
X | 및
REG = 송출 / ^ 18 | 29 $ / ; 을 console.log (reg.test ( "18")); // => true로 CONSOLE.LOG (reg.test ( "29")); // => true로 콘솔 .LOG (reg.test ( "129")); // => true로 CONSOLE.LOG (reg.test ( "189")); // => true로 CONSOLE.LOG (reg.test ( "1829")) ; // => true로 CONSOLE.LOG (reg.test ( "829")); // => true로 CONSOLE.LOG (reg.test ( "182")); // => true로 // --- 직접 그룹화 : | X Y의 혼란은 일반적으로 우리가 있기 때문에 우선 순위 => 괄호 괄호 변경 프로세스들이 작은 그룹 괄호를 동반하는 경우 쓰기, 우선 순위의 문제가있을 것입니다 | 등록 번호 = / ^ (29 18 $ /) ; CONSOLE.LOG (reg.test는 ( ) "(18)는");// => 사실 CONSOLE.LOG (reg.test ( "29")); // => true로 CONSOLE.LOG (reg.test ( "129")); // = "false로 CONSOLE.LOG (reg.test ("189 ") ) // = "false로는 // =>은 18 또는 29 일 수있다
// 1에서 괄호에 나타나는 문자 일반적 의미 프록시 송출 REG = / ^ [@ +] $ / ; 을 console.log (reg.test ( "@")); // => true로 을 console.log를 (reg.test ( "+")); // => true로 CONSOLE.LOG (reg.test ( "@@")); // = "false로 CONSOLE.LOG (reg.test (@"+ ")) ; // = "false로 REG = / ^ [\ D] $ /; // => \ 또는 D 괄호 0-9 CONSOLE.LOG (reg.test ("D ")); // ="false로 CONSOLE.LOG (reg.test ( "\\")); // = "false로 CONSOLE.LOG (reg.test ("9. ")); // => true로 // 브래킷 다수의 부재 (2) 번호 REG = / ^ [18이다] $ / ; CONSOLE.LOG (reg.test ("1")); // => 진정한 CONSOLE.LOG (reg.test ( "8")); // => 진정한 CONSOLE.LOG (reg.test ( "18")); // => 허위 등록 = / ^ [10-29] $ /; // => 1或者0-2或者9 CONSOLE.LOG (reg.test ( "1")); // => 사실 을 console.log (reg.test ( "9")); // => 진정한 CONSOLE.LOG (reg.test ( "0")); // => 진정한 CONSOLE.LOG (reg.test ( "2")); // => 진정한 CONSOLE.LOG (reg.test ( "10")); // => 거짓
몇 가지 예 :
1. 확인이 유효한 숫자
/ * 규칙 분석 번호 또는 발생하지 않을 수있다 [+ - - * 1. +를 발생할 수? * (2)는 0-9가 될 수있을 수 처음 이상 0 (\ D | ([1-9 ] \ + D)) .? 뒤이어 + 진수 (\ \ + D)해야하는 경우 3. 소수 부분이 아닌 가능하다 * * / 송출 REG = / ^ [+ - (\ D |? ([1-9] . \ D +)) (\ \ D +) $ /?;
2. 비밀번호 확인
// => 숫자, 문자, 밑줄 @ => 6 ~ 16 송출 발 = userPassInp.value, REG = / ^ \ {W} $ -6,16- / ; 깃발에서하자 = reg.test (발) 기능 checkPass (발) { IF (val.length <6 || val.length.> 16 ) { 경고 ( '6-16 사이 여야! ) 반환 ; } 면적하자 ='A '를,'B '....'_']; // => 숫자, 문자, 밑줄 포함 에 대한 합니다 (하자 I = 0; 나는 val.length을 <; 내가 ++ ) { 송출의 문자 = 발 [내가] IF (area.includes! (문자 )) { 경고 ( '형식이 올바르지 않습니다!' ); 반환 ; } } }
3. 실제 이름을 확인
/ * * 1. 문자 / ^ [\ u4E00- \ u9FA5] $ / * 이름 길이 2 ~ 10 2. * 3. 일부 번역 한자 (· [\ u4E00- \ u9FA5] {2,10}) { 0,2} * / 송출 REG = / ^ [\ u4E00- \ u9FA5 {2,10} (· [\ u4E00- \ u9FA5 {2,10}) $ {0,2} /;
4. 사서함을 확인
레지 = /^\w+((-\w+)|(\.\w+))*@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+하자 .) * \ [A-ZA-Z0-9] + $ / ; // => \ W의 +는 ((- \ + W) (|. \ \ W +는)) * // 1. 영숫자 밑줄 (1 시작 기타) 이상 // 2도 할 수있다 - 영숫자 문자 또는 숫자가 많은 시간에 전체적인 영을 강조 강조
5. ID 번호 (걸쳐 도립 시군로 특정 코드 번호와 일치하지만)
/ * * 1 (18)의 총 마지막 하나는 X- 수있다 * 2 * * ID 카드 여섯 전 : 도립 시군 * 중간 8 : 날짜 * 마지막 네 : * 마지막 => X 또는 디지털 * = 끝에서 두 번째는> 짝수 - 홀수 F M *를 계산하는 알고리즘의 나머지의 결과 * / // .] | (X- \ D) $ /를는 REG = / ^ \ {D} 17하자 // => 패킷 괄호 두번째 작업 : 패킷 캡쳐, 다이쇼 일치하지 않는 정보만을 포착, 콘텐츠는 각각의 작은 패킷을 개별적으로 포착 할 수 있도록 등록 = / ^ (\의 D {6}) (\의 D {4}) (\ D {2}) (\ D {2}) \의 D {2} (\ D) (\ D | X-) $ / ; reg.exec는 ( "123456789012345678"); // => 포착 결과가 배열, 콘텐츠의 패킷으로서, 개인마다 약간 취득