[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;
//.* 의 뜻 : ?는 뭐가 와도 상관없어~ 대신 대괄호 속에 있는게 와야해~
'JavaScript' 카테고리의 다른 글
[javascript] Element 인터페이스 / Node 노드 추가 삭제 (0) | 2022.09.26 |
---|---|
[javascript] getElement 관련 함수 (0) | 2022.09.26 |
[javascript] form 객체 / form 서버 전송 (1) | 2022.09.25 |
[javascript] change 이벤트 / focus 이벤트 (0) | 2022.09.25 |
[javascript] 마우스 관련 이벤트 / 마우스 좌표 (0) | 2022.09.25 |
블로그의 정보
개발자 미니민의 개발로그
mini_min