본문 바로가기

프로그래밍/[JS] javascript & jQuery

[javascript&jQuery] 정규식으로 특정문자 제거

안녕하세요~  

블로그지기 인간대표 입니다.





자바스크립트에서 특정문자 또는 특수문자를 제거할때,

-가 여러번 있는 문자열(주민번호,전화번호)을 단순히 replace('-','')로 하면, 

처음 -기호만 삭제되고 나머지는 삭제되지 않습니다.


하여 아래와 같이 해야 가능합니다.

value.replace(/\-/g,'');

-기호가 특수문자 이기때문에 \역슬래시를 붙여줍니다.





다른 정규식 보기

특정문자 제거            : str.replace(/\-/g,'');
앞의 공백 제거           : str.replace(/^\s+/,'');
뒤의 공백 제거          : str.replace(/\s+$/,'');
앞뒤 공백 제거          : str.replace(/^\s+|\s+$/g,'');
문자열 내의 공백 제거  : str.replace(/\s/g,'');
개행 제거                : str.replace(/\n/g,'');
엔터 제거                : str.replace(/\r/g,'');

0 제거                   : str.replace(/[^(1-9)]/gi,"");



정규식에서 문자가 의미하는 뜻

[a-z] : a ~ z 사이의 문자를 찾음

[abc] : a, b, c중 하나를 찾음

[^abc] : a, b, c를 제외한 문자를 찾음


.z : 아무 문자 하나를 . 기호로 찾으며 z로 끝남을 의미

a+ : a가 1개 이상을 의미함

a* : a가 0개 또는 그 이상을 의미함


s : 공백 문자를 찾음(스페이스, 탭 등)

S : 공백이 아닌 문자를 찾음

d : 숫자를 찾음

D : 숫자가 아닌 문자를 찾음

w : 알파벳 영문과 숫자와 언더바 _ 기호를 찾음

W : 알파벳 영문과 숫자와 언더바 _ 기호가 아닌 것을 찾음

t : 탭 공간을 찾음

v : 버티칼 탭 공간을 찾음


g : 검색범위를 전역으로 확장

i : 대소문자를 구분하지 않음

gi : 검색 범위를 전역으로 확대하면서 대소문자를 구분하지 않음

m : 여러줄을 동시에 매칭함






정규표현식

정규식이라고도 부른다. 보통 regex 혹은 regexp 라 많이 쓴다.



문법

문자열에서 URL을 찾는 정규표현식의 예제는 다음과 같다.


/(http|https|ftp|telnet|news|mms)://[^\"'\s()]+/i


위 정규식은 아래와 같이 구분이 된다. 

패턴구분자 시작     : /

찾을 문자열의 패턴 : (http|https|ftp|telnet|news|mms)://[^\"'\s()]+

패턴구분자 끝       : /

패턴변경자          : i



패턴구분자

정규식의 패턴이 달라질 경우 그것을 구분하는 문자로, 정규식 패턴이 하나만 있을 경우에는 굳이 쓸 필요가 없지만 

대부분 붙인다. 난해하게 만드는 주범이다. 왜냐하면, 이 패턴구분자는 특수문자 중 역슬래쉬(\)를 제외하고 

아무거나 쓸 수 있기 때문이다. 심지어 아래 등장하는 의미를 가진 문자(메타 문자라고 부른다)도 패턴구분자로 쓸 수 있다. 

보통 슬래쉬(/)를 많이 사용하지만 규칙이 있는 것이 아니라서 정말로 프로그래밍 하는 사람 마음대로다. 

이래저래 헷갈리는 주범 중 하나.



메타 문자

정규표현식에서 일정한 의미를 가지고 쓰는 특수문자를 메타 문자라고 부른다.

^ : 문자열의 시작

$ : 문자열의 종료. 옵션에 따라 문장의 끝 또는 문서의 끝에 매치된다.

. : 임의의 한 문자

[]: 문자 클래스. 문자 클래스 안에 들어가 있는 문자는 그 바깥에서 하나의 문자로 취급된다.

| : or를 나타냄

? : 앞 문자가 없거나 하나 있음

+ : 앞 문자가 하나 이상임

* : 앞 문자가 0개 이상임

{n,m} : 앞 문자가 n개 이상 m개 이하. {0,1} 은 ?와 같은 의미다.

{n,} : 앞 문자가 n개 이상. 위의 형태에서 m이 생략된 형태이다. {0,} 이면 *와 같고 {1,} 이면 +와 같은 의미이다.

() : 하나의 패턴구분자 안에 서브 패턴을 지정해서 사용할 경우 괄호로 묶어주는 방식을 사용한다.




패턴변경자

패턴구분자가 끝나면 그 뒤에 쓰는 것으로, 패턴에 일괄적으로 변경을 가할 때 사용한다. 


i : 패턴을 대소문자 구분 없이 검사한다. 이 변경자를 사용할 경우 [a-z]로만 검사해도 자동으로 [a-zA-Z]와

   같은 기능을 하게 된다. 가장 많이 쓰이는 패턴.

s : 임의의 한 문자를 가리키는 . 메타 문자에 개행 문자(\n)도 포함시키도록 한다.

    이 변경자를 사용하면 .이 줄바꿈도 임의의 한 문자로 취급하여 찾는다.

m : 주어진 문자열에 줄바꿈이 있을 경우, 여러 줄로 취급하여 검사한다.

    (줄바꿈이 없다면 써도 의미가 없다.) 원래 정규표현식을 쓸 때 줄바꿈은 무시되는데,

    이걸 사용하면 줄바꿈을 적용해서 검사한다. 그리고 ^은 한 줄의 시작, $는 한 줄의 끝으로 의미가 달라진다.

x : 공백 문자를 찾지 않고 무시해 버린다. 단, 이스케이프(역슬래쉬하고 같이 쓸 경우)하거나

   문자 클래스 안에 있을 경우에는 이걸 써도 공백을 찾는다.









서이추 항상 환영입니다^_^

이상 인간대표 블로그였습니다.