💖 정규 표현식(Regular Expression)

문자열에서 특정 문자 조합을 찾기 위한 패턴이다.

 

 

💖 정규 표현식의 정의하는 방법

1. RegExp 객체를 이용한 생성: 다음과 같이 슬래시로 패턴을 감싸서 작성

let 객체명 = new RegExp('정규 표현식' [, 'flag'])

 

2. 정규 표현식 리터럴을 이용한 생성: 생성자 함수를 사용하면 정규 표현식이 런타임에 컴파일된다. 바뀔 수 있는 패턴이나, 사용자 입력 등 외부 출처에서 가져오는 패턴의 경우 이렇게 사용한다.

let 객체명 = /정규표현식/[flag]

 

flag 설 명
g Global 문자열 내의 모든 패턴을 찾아준다
i Ignore Case 문자열의 대소문자를 구별하지 않는다
m Multi Line 문자열의 줄바꿈이 일어나도 찾아준다
이메일 유효성 체크 /^[a-zA-Z0-9]+@[a-zA-Z0-9.]+$/

 

 

💖 정규 표현식 패턴 작성하기

정규 표현식 패턴은 /abc/처럼 단순한 문자로 구성하거나, /ab+c/ /Chapter (\d+)\.\d*/처럼 단순한 문자와 특수 문자의 조합으로 구성할 수도 있습니다. 특히 (\d+)에 나타난 괄호는 정규 표현식에서 기억 장치처럼 쓰여서, 괄호의 안쪽 패턴과 일치한 부분을 나중에 사용할 수 있도록 기억합니다.

 

💖 정규식을 사용하는 메소드

정규식은 '/'와 '/' 사이에 오는 문자들의 집합으 그 자체로 의미를 가지고 있다.

정규식은 search(), replace(), match(), split() 메소드를 사용한다. (match(), split() 메소드는 배열 객체로 리턴)

 

✨ pattern.test("문자")

pattern.test("문자") 메서드
test() 메서드는 정규 표현식 문자열이 일치하는지 안하는지를 의미하는 논리값 (true/false)을 반환한다.
<script type="text/javascript">
	let reg=/cat/;
	console.log(reg.test("cat"));			//true
	console.log(reg.test("cats and dogs"));		//true
	console.log(reg.test("Cat"));			//false
	console.log(reg.test("dog and cat"));		//true
</script>

 

✨ pattern.exec("문자") 

pattern.exec("문자") 메서드
exec() 메서드는 정규 표현식과 일치하는 문자열을 배열로 반환한다.
일치하는 문자열을 찾지 못했을 때는 null을 반환 한다.
<script type="text/javascript">
	let reg=/Script/g;
	let result=reg.exec("JavaScript Script");
	console.log(result.length);   //1
			 
	reg=/(Script)/g;
	result=reg.exec("JavaScript Script");
	console.log(result);   //Array(2)
</script>

 

✨ "문자".match(pattern) 

"문자".match(pattern) 메서드
match() 메서드는 첫 번째 받은 정규 표현식과 일치하는 문자열을 순서대로 저장해서 배열로 반환한다.
일치하는 값이 존재하지 않으면 null를 반환한다. string에서 제공하기 때문에 "문자".match(패턴)으로 작성한다.
<script type="text/javascript">
	let str="1 little,2 little indian";
	let result=str.match(/\d+/g);
	console.log(result.length);		//2
	console.log(result[0]+","+result[1]);	//1,2	
	str="one little, two little indian";
	result=str.match(/\d+/g);
	console.log(result);			//null
</script>

 

✨ "문자".search(pattern) 

메소드 설 명
문자열이 String로 매치될 때 문자열 중에서 매개변수와 매치되는 첫 번째 문자열의 시작 index값
String과 매치되지 않을 때 매치되는 문자열이 없을 때는 -1을 리턴한다.
<script type="text/javascript">
	let reg = /\W/ ; // \W는 영문자와 숫자가 아닌 경우
	let str = prompt("ID를 입력 하세요", "language");
	if(str.search(reg)>=0) {
		alert("ID는 영문자와 숫자만 사용할 수 있습니다."); }
	else {
		alert( str + "은(는) 사용할 수 있는 ID입니다"); }
</script>

 

✨ "문자". replace(string1, string2) 

메소드 설 명
"문자열" 문자열 중에서 매개변수 string1과 매치되는 첫 번째 문자열을
두 번째 매개변수 string2로 교체하여 새로운 문자열을 리턴한다.
매치되는 문자열이 없을 때는 String 객체 자체(원본 문자열)을 리턴한다.
/정규식/g 정규식의 g속성이 사용되면 매치되는 첫 번째 문자열뿐만 아니라
모든 문자열을 두 번째 매개변수로 교체하여 교체된 문자열을 리턴한다.
매치되는 문자열이 없을 때 는 원본 문자열을 리턴한다.

 

 

💖 메타문자

정규식에서 사용하는 메타문자는 일반문자와 달리 의미를 가지고 있는 문자들을 말한다.

여기에는 단독으로 의미를 가지는 것($, ^, *, +, |, ? )들 과 그룹으로 묶여서 의미를 가지는 것([], {}, ())들이 있다.

 

✨ 메타문자와 단축 문자클래스

메타문자 단축 문자클래스 설 명
[]   [abc]는 문자 “a” , ”b” , ”c” 중에 하나의 문자와 매 치되는 것
[^]   [^abc]는 “a” , ”b” , ”c”를 제외한 임의의 한 문자 와 매치되는 것
{}   {}앞에 있는 항목이 반복될 때 반복횟수를 지정 하는 것
()   여러 항목을 묶어서 단일 단위로 사용할 수 있 도록 하는 것 (그룹)
|   a|b는 a나 b중에 하나와 매치된다
 
\d [0-9] 0부터 9까지의 숫자 중에 하나와 매치된다
\D [^0-9] 숫자(0~9)를 제외한 임의의 문자에 매치된다
\s   임의의 공백문자(\t, \n, \r)에 매치된다 (공백을 의미하지만 출력되지 않는 문자들)
\S   공백문자가 아닌 임의의 한 문자에 매치된다
\w [A-Za-z0-9] 알파벳과 숫자에 매치되는 임의의 한 문자 (알파벳과 숫자)
\W [^A-Za-z0-9] 알파벳과 숫자가 아닌 임의의 한 문자
 
(?=pattern)   or 연산으로 정의된 패턴과 일치하는 문자열
(?:pattern)   패턴의 일부를 or문자(|)를 사용해 결합
 
^   문자열 행의 시작부분과 매치된다
$   문자열 행의 끝부분과 매치한다
.   줄바꿈 문자를 제외한 "모든 문자" 하나에 매치된다
?   바로 앞에 문자가 없거나 하나로 매치된다
+   바로 앞에 문자가 한번 이상 반복으로 매치된다 (1회이상)
*   바로 앞에 문자가 없거나 하나 이상 반복으로 매치된다 (0회이상)
<script type="text/javascript">
	let name = '영희 * 철수';
	let namePattern = /\*/	// <- \를 붙여서 특수문자 *을 검색 가능
	namePattern.test(name);	// true
</script>

 

'Language > Javascript' 카테고리의 다른 글

jQuery  (0) 2022.06.10
JSON(Javascript Object Notation)  (0) 2022.05.22
2. DOM 선택자  (0) 2022.05.20
1. DOM (Document Object Model)  (0) 2022.05.17
2. Javascript 내장 객체  (0) 2022.05.17