0. 정규표현식을 테스트해볼 수 있는 사이트
1. 정규표현식 패턴 만들기
1) var pattern = /a/;
-> 찾고자 하는 형식 문자열을 / 와 / 사이에 담는다.
2) var pattern = new RegExp('a');
-> 찾고자 하는 형식 문자열을 ' '사이에 담는다.
2. 정규표현식 메소드 실행
1) RegExp.exec()
console.log(pattern.exec('abcdef'));
-> ["a"]
2) RegExp.test()
console.log(pattern.test('abcdef'));
-> true
3. 문자열 메소드 실행
1) String.match() --> RegExp.exec()와 동일효과
var pattern = /a/;
var str = 'abcdef';
str.match(pattern);
-> ["a"]
2) String.replace()
var pattern = /a/;
var str = 'abcdef';
str.replace(pattern, 'A');
-> "Abcdef"
4
아래 내용이 정말 잘 정리되어있어 퍼옴....
[출처] Javascript RegExp (정규표현식)|작성자 SPACE
Smart Life & Computer Climbing : 네이버 블로그
안녕하세요~ "ItIN"을 위한 첫걸음
blog.naver.com
컴퓨터는 반복되고 패턴이 있는 행위를 처리할 때 유용하다.
그렇기 때문에 프로그래밍에서도 반복문과 조건문은 매우 중요한 부분이다. 그러나 문자열의 반복되는 패턴을 정의하고 이 패턴에 일치하는 값을 찾고 싶은 경우 반복문과 조건문을 이용하기에는 너무 복잡하다. 그래서 등장한 것이 정규표현식이다.
즉 정규표현식은 문자열의 규칙과 패턴을 정의한 공식(언어) 이라고 정의할 수 있다.
이는 이메일형식이나 전화번호가 형식에 맞는지 체크하는 유효성검증에 매우 유용하게 사용될 수 있다. 또한 웹페이지의 내용을 긁어와 원하는 패턴과 일치하는 내용만 발췌하고 싶을때 정규표현식이 사용되기도 한다. 그리고 자바스크립트에서는 정규표현식을 기본적으로 지원하고 있기 때문에 활용도가 높다.
아래 사이트에서는 정규표현식의 문법과 자바스크립트에서의 사용법을 잘 설명하고 있다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions
정규표현식의 사용법을 간단히 요약해보면 다음과 같다.
1. 정규표현식의 정의
- 정규표현식은 객체로 취급되기 때문에 생성자함수 또는 리터럴로 정의한다.
- 리터럴방식의 정의가 주로 사용되며 패턴이 예측되지 않을 때 생성자함수를 사용한다.
//객체리터럴 var reg = /정규표현식/ //생성자함수 var reg = new RegExp("정규표선식");
2. 정규표현식 관련 매서드
- 정규표현식으로 패턴을 정의했다면 문자열과 비교하여 매서드를 활용해 Boolean값이나 일치하는 값 또는 값을 변형하여 반환 받을 수 있다.
var reg = /정규표현식/ var str = '문자열' //exec는 일치하는 문자열의 배열을 반환하며 test는 매칭여부를 확인하고 true 또는 false를 반환 reg.exec(str) reg.test(str) //String 객체의 매서드를 활용할 수 있다. str.match(reg) //일치하는 문자열의 배열을 반환 (일치하는 부분이 없으면 null) str.search(reg) //일치하는 문자열의 인덱스를 반환 (일치하는 부분이 없으면 -1) str.replace(reg|substr, newSubStr|function) //일치하는 문자열을 원하는 값으로 대체 str.split([reg[, limit]]) //정규표현식과 일치하는 기준으로 문자열을 분리
정리하면 정규표현식과 문자열을 비교하여 반환값을 얻는 과정으로 요약할 수 있다.
여기까지는 javascript문법이기 때문에 비교적 쉽게 이해할 수 있다.
하지만 정규표현식으로 원하는 패턴을 만드는 방법은 어렵게 느껴진다. 특수기호와 알파벳 약자로만 이루어져있기 때문에 처음보면 외계어같기도 한데 그래도 이 방법이 현재까지는 가장 쉬운방법이니 익숙해져야만 한다. 그러면 다음으로 패턴을 만드는 방법을 정리해보자.
정규표현식의 구조는 아래의 그림과 같다.

출처 : http://poiemaweb.com/js-regexp
그리고 이 구조를 이용하여 이메일 주소의 패턴을 만들면 다음과 같다.
/^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
너무 길고 복잡하다. 하나씩 다 정리하는 것은 불가능하기 때문에 정규표현식에 사용되는 기호를 표로 정리해보았다.
플래그 | g | 전역 비교 |
플래그 | i | 대소문자 구분하지 않고 비교 |
플래그 | m | 여러줄의 검사 |
정규표현식기호 | $& | 일치하는 문자열 |
정규표현식기호 | $` | 일치하는 부분의 앞부분 문자열 |
정규표현식기호 | $' | 일치하는 부분의 뒷부분 문자열 |
정규표현식기호 | $1, $2, $3 | 그룹 |
정규표현식기호 | ^ABC | ABC로 시작하는 문자열 |
정규표현식기호 | ABC$ | ABC로 끝나는 문자열 |
정규표현식기호 | . | 임의의 문자 |
정규표현식기호 | [abc] | [ ] 안의 글자 |
정규표현식기호 | [^abc] | [ ] 안의 글자 제외 |
정규표현식기호 | [a-z] | a부터 z까지 |
정규표현식기호 | [0-9] | 0부터 9까지 |
정규표현식기호 | \d | 숫자 |
정규표현식기호 | \w | 아무단어 (숫자포함) |
정규표현식기호 | \s | 공백문자 |
정규표현식기호 | \D | 숫자아님 |
정규표현식기호 | \W | 아무단어 아님 |
정규표현식기호 | \S | 공백문자 아님 |
정규표현식기호 | a+ | a가 한개이상 |
정규표현식기호 | a* | a가 0개 또는 여러개 |
정규표현식기호 | a? | a가 0개 또는 1개 |
정규표현식기호 | a{6} | a가 6개 |
정규표현식기호 | a{2,5} | a가 2개~5개 |
정규표현식기호 | a{2,} | a가 2개이상 |
정규표현식기호 | a{,2} | a가 2개 이하 |
정규표현식기호 | (abc|def) | abc 또는 def |
기본적인 것들을 정리는 해봤지만 아마 더 많은 기호가 사용될 것이다.
필요한 문자열패턴이 있다면 위의 기호와 검색을 통해 어떻게든 만들어내야 한다. 만들고자 하는 규칙과 반복된 패턴이 있다면 암호를 만드는 게임을 한다는 자세로 하나하나씩 재미있게 만들어 가면 된다.
만약 만들었다면 아래의 사이트에서 테스트를 할 수 있다.
https://regexr.com/
다음의 사이트는 문자열을 입력하면 어떤 정규표현식 기호가 알려주는 사이트다
다.
http://www.txt2re.com/
쉬운일은 아니고 익숙해지는데도 오랜 시간이 걸리는 부분인 것 같다. 게다가 간단한 유효성 검증이 아닌 이를 프로그래밍에 활용하고자 한다면 더 많은 시간이 필요하다는 생각이 든다. 하지만 프로그래밍 실력의 레벨을 올리기 위해서는 극복해야만 하는 과정이다.
[출처] Javascript RegExp (정규표현식)|작성자 SPACE
'Language > javascript' 카테고리의 다른 글
[ java script ] each() (0) | 2020.01.08 |
---|---|
[ java script ] FileReader (0) | 2019.12.31 |
[ java script ] javascript 사전 (0) | 2019.12.30 |
[ java script ] 배열의 관리 (0) | 2019.12.30 |