Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

3일만에 끝내는 HTML, CSS, JS 기초

j36. 자바스크립트 정규 식 본문

JAVASCRIPT

j36. 자바스크립트 정규 식

눈의나라북범 2016. 6. 5. 15:54

자바스크립트 정규 식

정규 식 (regular expression) 은 일련의 문자들 (characters) 인데, 검색 패턴 (search pattern) 을 형성합니다.

텍스트에서 데이터를 검색할 때, 무엇을 찾는지 표현하기 위해 이 검색 패턴 (search pattern) 을 사용할 수 있습니다.

정규 식 (regular expression) 은 단일 문자 일수도 있고, 좀더 복잡한 패턴일 수도 있습니다.

정규 식 (Regular expressions) 은 텍스트 검색 및 텍스트 교체 연산 (text replace operations) 에 사용될 수 있습니다.

/pattern/modifiers;
var myText = "조선 중기의 무신이었던, General Lee Sun-Shin은 1545년 탄생하여 1598년에 돌아가셨습니다."; var locationText = myText.search(/general lee sun-shin/i);
위의 코드를 설명하면 우선 /general lee sun-shin/i 부분이 정규 식 (regular expression) 입니다. 여기서 general lee sun-shin 부분이 찾으려는 패턴이고, i 는 대소문자를 상관없이 찾도록 (case-insensitive) 검색 방법을 변경해주는 변경자 (modifier) 입니다.

자바스크립트에서, 정규 식 (regular expressions) 은 종종 string 메서드 즉, search() 나 replace() 메서드 와 함께 사용됩니다.

search() 메서드는 부합되는 부분을 찾기 위해 식을 사용하고, 부합되는 부분의 위치를 반환합니다.

replace() 메서드는 교체될 패턴을 찾아 문자열을 변경하여 반환합니다.

문자열 "General Lee Sun-Shin" 을 찾아서 그 위치를 표시합니다.

myText.search(/general lee sun-shin/i); 은 문자열 myText 에서 "General Lee Sun-Shin" 글자를 찾아, 위치를 반환합니다. 

이때 /i 는 영어의 경우 대소문자 상관없이 찾으라는 search() 메서드의 변경자 입니다.

그런데 search 메서드는 검색 인수 (search argument) 로서 문자열 (string) 도 사용할 수 있습니다.

즉, 문자열 인수 (string argument) 가 정규 식 (regular expression) 으로 변환됩니다.

<p>문자열 "General Lee Sun-Shin" 을 찾아서 그 위치를 표시합니다.</p> <button onclick="mySearchFunction()">일치하는 문자열의 위치 찾기</button> <p id="searchResult1"></p> <p id="searchResult2"></p> <script> function mySearchFunction() { var myText = "조선 중기의 무신이었던, General Lee Sun-Shin은 1545년 탄생하여 1598년에 돌아가셨습니다."; var searchText1 = myText.search(/general lee sun-shin/i); var searchText2 = myText.search("general lee sun-shin"); document.getElementById("searchResult1").innerHTML = searchText1; document.getElementById("searchResult2").innerHTML = searchText2; } </script>

문자열 "General Lee Sun-Shin" 을 찾아서 새로운 문자열 "이 충무공" 으로 글자를 바꿉니다.

정규 식 (regular expression) 을 갖는 replace() 메서드로 문자열을 바꿀 수 있습니다.

또는 replace() 는 검색 인수 (search argument) 로서 문자열 (string) 도 받으므로, 문자열로 단어를 바꿀 수도 있습니다.

<p>문자열 "General Lee Sun-Shin" 을 찾아서 새로운 문자열 "이 충무공" 으로 글자를 바꿉니다.</p> <button onclick="myReplaceFunction()">일치하는 문자열의 내용 바꾸기</button> <p id="replaceResult1"></p> <p id="replaceResult2"></p> <script> function myReplaceFunction() { var myText = "조선 중기의 무신이었던, General Lee Sun-Shin은 1545년 탄생하여 1598년에 돌아가셨습니다."; var replaceText1 = myText.replace(/general lee sun-shin/i,"이 충무공"); var replaceText2 = myText.replace("general lee sun-shin", "이 충무공"); document.getElementById("replaceResult1").innerHTML = replaceText1; document.getElementById("replaceResult2").innerHTML = replaceText2; } </script>

이와 같이 문자열 인수 (arguments) 대신에 정규 식 인수 (Regular expression arguments) 가 사용될 수 있다는 것을 보았습니다.

정규 식 (Regular expressions) 은 위의 예에서 영문자의 경우 대소문자 구별여부를 사용할 수 있는 것처럼 좀더 파워풀한 검색을 제공합니다.

정규 식 변경자 (Regular Expression Modifiers) 는 모두찾기나 다중라인 찾기 같은 기능을 수행하는데 사용될 수 있습니다.
Modifiers can be used to perform case-insensitive more global searches:

변경자(Modifier) 설명 i 대소문자 가려서 검색 g 첫번째 일치에서 중단하지않고, 전체 일치 찾기 m 다중라인 일치 찾기

정규 식 패턴 (Regular Expression Patterns) 에는 괄호 [] (), 메타 문자 \, 정량자 Quantifiers 가 사용됩니다.

먼저 괄호 는 문자의 범위를 찾는데 사용됩니다.

식 설명 /[순장충]/ 괄호 사이의 문자 중에 하나가 일치하는 곳을 찾습니다. /[5932]/ 괄호 안의 숫자 중 하나가 일치하는 곳을 찾습니다. /(최|박|이)/ 괄호안의 | 로 구분된 문자 중 하나가 일치하는 곳을 찾습니다.

Metacharacters are characters with a special meaning:

메타 문자 설명 /\d/ 숫자를 찾습니다. /\s/ 공백 문자 (whitespace character) 를 찾습니다. /\b/ 말이 끝나는 곳이나 시작되는 곳을 찾습니다. /\u0031/ 16진수 로 표현된 유니코드 문자 (Unicode character) 를 찾습니다. 여기서 \u0031 는 숫자 1을 의미합니다.

정량자 (Quantifiers) 는 수량을 정의합니다.

정량자 설명 /가+/ 최소한 한번 이상의 "가" 가 있는 위치를 찾습니다.

[광고] Udemy 동영상 강의로 보기