개발자 미니민의 개발스터디

[javascript] 정규식 패턴 정리

by mini_min
[javascript] 정규식 패턴 정리

✔️ 정규식이란?

: 정규식은 문자열에서 나타나는 특정 문자 조합과 대응시키기 위해 사용되는 패턴이다.

: 정규식을 이용하면 특정 패턴과 일치하는 문자열의 검색, 치환, 추출이 가능하다.

: 자바스크립트에서 정규식은 객체이다.

: 정규식 패턴은 RegExp 객체의 exec(), test(), complile() 함수 그리고 String 객체의 match(), replace(), search(), split() 메소드 등과 함께 쓰인다.

 

📓 형식

var 변수 = new RegExp(패턴);

패턴은 따옴표나 슬래시로 감싸야한다.

 

📓 flags

g : 글로벌 매치. 전체에서 일치하는 모든 문자를 검색한다.

i : 대소문자를 구별하지 않는다.

m : 시작 또는 끝 문자 탐색이 다중 행에 적용되도록 한다.

 

- flags : i인 경우

 var p, s;
 
 p = /ab+c/i; // i: 대소문자를 구분 안한다. +: 앞문자 1자 이상
 
 s = 'xy abc 12';
 console.log(p.test(s)); // true
 
 s = 'xy ab 12';
 console.log(p.test(s)); // false
 
 
 //생성자 방식
p = new RegExp('ab+c', 'i');
 
 //대소 구분 x
s = 'xy Abbc 12';
console.log(p.test(s)); // true

 

- flags : g인 경우

var s, p, a;

s = "web 자바 jsp 자바 html";

p = /자바/;

a = s.replace(p, 'java'); //치환// 뒤에 자바는 안바뀐다.
console.log(a); 	//"web java jsp 자바 html";

p = /자바/g;
a = s.replace(p, 'java'); //치환
console.log(a); 	//"web java jsp java html";

 

 

✔️ RegExp 객체

: 파라미터에 따옴표를 사용해선 안된다.

: 생성자 방식 = 파라미터에 따옴표를 사용해야한다.

// . : 한문자
p = /a.s/;
s = 'abs';
console.log(p.test(s)); // true

s = 'as';
console.log(p.test(s)); // false

 

 

// x* : 앞문자 x와 0개 이상 일치 (없어도 되고, 하나있어도, 두개 있어도 된다.)
p = /test a*b/;
s = 'test aab';
console.log(p.test(s)); //true

s = 'test b';
console.log(p.test(s)); //false -> true 라고 함 (a가 있어도 되고 없어도되니까)

s = 'test ax';
console.log(p.test(s)); //false

s = 'user aab';
console.log(p.test(s)); //false
💡 * 은, 앞문자와 0개 이상 일치해야한다. (* 앞에 문자가 없어도 되고, 하나있어도 되고, 두 개 있어도 된다.)
var s, p;

// \d, [0-9]
// x{2} : x가 두개, x{2, 5} : x가 2~5개, x{2,} : x가 두개이상

//한자리 숫자
p = /^\d{1}$/;
p = /^[0-9]$/;
s = '7'; 
console.log(p.test(s)); //true
s = '75';
console.log(p.test(s)); //false

//한 자이상 숫자
p = /^(\d+)$/;
// p = /^[0-9]{1,}$/;
// p = /^\d{1,}$/;

s = '7'; 
console.log(p.test(s)); //true
s = '75';
console.log(p.test(s)); //true


//숫자가 포함되어 있지 않으면 참이다.
p = /^(\D)+$/;
s = 'a7'; 
console.log(p.test(s));  // f
s = '75a';
console.log(p.test(s));  // f
s = 'a75a';
console.log(p.test(s));  // f
s = 'aa';
console.log(p.test(s));  //true

//1~3자 숫자
p = /^\d{1,3}$/;

//한자 이상의 숫자, 부호 및 소수점도 가능
// x? : 앞문자 0개 또는 1개 (x{0,1} 과 일치)
p = /^[+-]?\d+(\.?\d*)$/;

 

 

// 자바로 시작하고 웹으로 끝나는 모든 문자
p = /^자바(.*)웹$/;
s = '자바 사랑 웹';
console.log(p.test(s));  //true

s = '자바 스프링 서블릿'
console.log(p.test(s)); //false
💡 ^ : ~로 시작
$ : ~로 끝나는

 

 

var s, p;

//1자 이상의 영숫자 
// p = /^[a-zA-Z0-9]+$/;
p = /^[a-z0-9]+$/i;

// 1자 이상의 영숫자와 언더바
p = /^\w+$/i;

//공백(탭) : \s
// 영문자와 공백
p = /^[a-z\s]+$/i;
s = 'a b';
console.log(p.test(s));  //true

s = 'a 1';
console.log(p.test(s));  //false

// x(?=y) : x 다음에 y가 나오는 경우에만 x와 일치 (패턴이란 말)
//영문자로 시작하고 영숫자와 언더바 가능
p = /^(?=[a-z])(\w)*$/i;
s = 'a';
console.log(p.test(s)); // true

s = '1a';
console.log(p.test(s)); // false

s = 'a1';
console.log(p.test(s)); // true


// | : 또는
// 자바, 웹, java, web 하나 이상 존재 여부
p = /.*(?=자바|웹|java|web).*/i;
p = /(?=자바|웹|java|web)/i;

// 한글 : \uac00 ~ \ud7a3, 가-힣
// 1자 이상 한글
p = /^[가-힣]+$/;
p = /^[\uac00-\ud7a3]+$/;

 

 

🔒 날짜 정규식

//날짜, 2000-10-10, 2000.10.10, 2000/10/10, 20001010
// ? : 0개 하나
p = /^[12][0-9]{3}[\-\.\/]?[01][0-9][\-\.\/]?[0-3][0-9]$/;
s = "2000.10.10";
console.log(p.test(s)); // true

s = "2000.20.10";
console.log(p.test(s)); // false

s = "2000.00.10";
console.log(p.test(s));

 

🔒 패스워드 정규식

p = /(?=.*[a-z])(?=.*[!@#$%^&*-+=]|.*[0-9]).{5,10}$/i;
//.* 의 뜻 : ?는 뭐가 와도 상관없어~ 대신 대괄호 속에 있는게 와야해~

 

 

 

블로그의 정보

개발자 미니민의 개발로그

mini_min

활동하기