Dog foot print

[javascript] 정규표현식이란 ? 본문

Javascript

[javascript] 정규표현식이란 ?

개 발자국 2019. 7. 19. 21:19

정규표현식이란 문자열에서 특정한 패턴의 규칙을 가진 문자열의 집합을 표현 하는데 사용하는 형식 언어이다.  - 위키 

 

정의가 조금 와닿지 않을 수 도 있을 것 같다. 예를 들면 우리가 커뮤니티나 게임에서 "시발", "개새끼" , "섹스" 등 금지어를 글에 적을 때 해당  금지어 때문에 작성이 되지 않는 다던가 해당 금지어가 다른 문자열로 치환 되는 것을 본 경험이 있을 것이다. 이런 전체 문자열에서 특정한 문자열의 검색과 치환을 위해 사용되는 것이 정규표현식이다. 

 

정규표현식 생성방법 

정규표현식을 만드는 방법은 조금 난이도가 있어 보인다. 검색기능이 강력한 사이트를 관리하는 입장이라면 정규표현식은 필수로 잘 다뤄야 겠지만 일반인이라면 사용할때만 집중해서 만드는 것도 좋을 듯하다. 아래에 정말 잘 정리해놓은 블로그가 있으니 참조하면 된다. 

 

https://soooprmx.com/archives/7718

 

정규표현식의 개념과 패턴 사용법 총정리 · Wireframe

정규 표현식은 텍스트 내에서 특정한 규칙에 따른 문자열이 나타나는 범위를 검색하는 기법으로 텍스트를 다루는 프로그램에서 널리 사용된다. 그외에도 notepad++이나 sublime text 같은 편집기에서도 정규식을 이용하여 찾기/바꾸기를 보다 강력하게 수행할 수 있다.

soooprmx.com

 

javascript의 정규표현식 사용 

 

자바스크립트에서 정구표현식을 사용할때는 RegExp라는 객체의 인스턴스로 만들어주어도 되고 그냥 일반 변수에 저장 해도 된다 .

 

let regExp = new RegExp('[0-9]','g');

let regExp = '/[0-9]/';

 

 

RegExp 생성자 인자 ' 모드 '

let regExp = new RegExp('[0-9]','g'); //전역 검색
let regExp = new RegExp('[a-z]','i'); //대소문자 구분 없는 검색
let regExp = new RegExp('[0-9]','m'); // 다중 행 검색
let regExp = new RegExp('[0-9]','u'); // 유니코드 
let regExp = new RegExp('[0-9]','y'); // sticky 검색

 

'g'  : 문자열에 있는 해당 패턴에 true를 반환한다.

 

g를 적지 않고 replace나 검색을 하면 문자열을 돌다가 처음 만나는 패턴만 반환하고 끝난다. 

 

'i' : 해당 패턴의 대소문자를 가리지 않고 사용한다. 

 

'm' : '\n' 문자열이 개행이 되어도 모든 행에 걸쳐서 문자열을 검사한다. 

 

해당 문자열이 패턴에 해당하는지 확인해보기 .test();

test 메서드는 인자로 문자열을 받고 해당문자열에 특정 패턴이 있으면 true를 return 한다. 

 

let regExpNumbers = new RegExp('[0-9]','g');

 console.log(regExpNumbers.test("안녕하세요")); // true 
 console.log(regExpNumbers.test("안녕하세요 0")); // false

let regExpAtoZ = /[A-Z]/i;

console.log(regExpAtoZ.test("안녕하세요")); //false
console.log(regExpAtoZ.test("hellow")); // true

 

 

해당 패턴을 문자열에서 치환 하기 string.replace();

 

let regExpAtoZ = /[A-Z]/ig; // 대소문자를 가리지 않고 문자열 전체에서 검색한다. 

let dummyString = "안녕하세요 hello world"; 

console.log(regExpAtoZ.test(dummyString)); // true

dummyString = dummyString.replace(regExpAtoZ,""); // replace()메서드는 첫번째 인자로 해당하는 문자열을 2번째 인자로 바꿔준다. 
 
console.log(dummyString); // 안녕하세요

 

replace 메서드는 스트링 객체에서 작동하며 첫번째 인자로 받은 변환할 내용을 2번째 인자 변환할 내용으로 바꿔주고 바뀐 string을 return 한다. 

 

 

반응형
Comments