웹 프로그래밍 기초/객체

내장 객체 (RegExp)

별초롱언니 2025. 4. 9. 17:27

정규 표현식은 문자의 패턴을 검색하기 위한 일련의 문자이ㅏㄷ. 텍스트 검색 및 텍서트 바꾸기 작업에 검색 패턴을 사용할 수 있다. 예를 들어 회원가입의 경우 E-mail 주소를 입력할 때 id@주소와 같은 형식으로 입력하기 위한 문자 패턴을 정의하는데 유용하다. 

 

var 변수 = / 패턴 / 플래그 ; // 리터럴 방식

var 변수 = new RegExp ("패턴","플래그"); // 객체생성방식

 

** 일반적으로 객체의 생성보다는 리터럴 방식의 정규식을 많이 사용한다. 

 

RegExp 메서드

메서드 설명
search() String 객체의 메서드 항목을 검색하고, 위치를 반환
replace() String 객체의 메서드 항목을 검색하고, 해당 문자 변환
test() 정규 표현식과 일치한 문자열이 있으면 true 반환
exec() 정규 표현식과 일치하는 문자열 반환
match() 정규 표현식과 일치하는 문자열 반환
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    let str = "Hello JavaScript";
    let regexp_search = str.search(/javascript/i);
    document.write(regexp_search + "<br>"); // 대소문자 구분 x 
  </script>
</body>
</html>


test(), exec(), match()

 

test()와 exec() 메서드는 정규식의 패턴에 대해 문자열을 검색한다. 

검색 결과에 따라 test()는 true/false 반환, exec()는 발견된 텍스트 / null 반환

match() 메서드는 exec()와 유사하나 String 객체의 메서드인게 다르고, 인수로 정규 표현식의 패턴이 온다.

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    let str = "Hello JavaScript";
    let pattern = /JavaScript/;
    document.write(pattern.test(str) + "<br>");
    document.write(pattern.exec(str) + "<br>");
    document.write(str.match(pattern) + "<br>");
  </script>
</body>
</html>


플래그 설명
i 대/소문자를 구분하지 않는다.
g 문자열 내에서 모든 일치 항목을 검색 
(배열로 반환)
m 여러 줄의 문자열을 비교한다
(각 줄의 시작(^)과 끝($)을 찾을때)
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    let str = "Hello \n JavaScript javaScript JavaScript \n javaScript";
    let ptn01 = /javascript/i; // 대소문자 구분x 
    let ptn02 = /javaScript/g; // 모두 찾기
    console.log(str);
    console.log(ptn01 + " : " + str.match(ptn01));
    console.log(ptn02 + " : " + str.match(ptn02));
  </script>
</body>
</html>


 

정규식 패턴

패턴 설명
abc abc 문자열을 검색한다
[abc] a, b, c 중 하나의 문자를 검색한다
[^abc] a, b, c를 제외한 문자 하나를 검색한다
[A-Z] 알파벳 대문자를 검색한다
a.b a와 b사이에 임의의 한 문자가 있을 경우를 찾는다
[0-9] 0~9까지의  숫자를 검색한다
n+ 1회 이상 반복
bo+ : "bo", "boo" 등과 일치, "b"는 불일치
n* 0회 이상 반복
bo*는 "b", "bo", "boo" 등과 일치
n? ? : 0회 또는 1회 반복
bo?는 "b" 또는 "bo" 와 일치
\w 단어 문자와 일치 ( 알파벳, 숫자, 밑줄 포함 )
\W 단어 문자가 아닌 문자와 일치 ( 공백이나 구두점 )
\d 숫자를 검색
\D 숫자 제외하고 검색
\s 하나의 공백 검색
\S 공백 제외하고 검색 
^ 행의 첫 문자가 일치해야함
^Hello는 "Hello"로 시작하는 문자열과 일치
$ 행의 끝 문자가 일치해야함
world$는 "world"로 끝나는 문자열과 일치
{ } 숫자의 개수 지정 가능 
/\d{3}/은 숫자 3개(3자리수)를 의미
a|b a 혹은 b를 검색한다
(abc) 그룹화를 의미 
(abc)+는 "abc", "abcabc" 등과 일치
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
    let str01 = "ab";
    let str02 = "abc";
    let str03 = "abccc";
    let ptn01 = /abc+/ig;
    let ptn02 = /abc*/ig;
    let ptn03 = /abc?/ig;

    // +
    document.write(`1.ab : ${str01.match(ptn01)} <br>`);
    document.write(`2.abc : ${str02.match(ptn01)} <br>`);
    document.write(`3.abccc : ${str03.match(ptn01)} <br>`);

    // *
    document.write(`1.ab : ${str01.match(ptn02)} <br>`);
    document.write(`2.abc : ${str02.match(ptn02)} <br>`);
    document.write(`3.abccc : ${str03.match(ptn02)} <br>`);

    // ?
    document.write(`1.ab : ${str01.match(ptn03)} <br>`);
    document.write(`2.abc : ${str02.match(ptn03)} <br>`);
    document.write(`3.abccc : ${str03.match(ptn03)} <br>`);
  </script>
</body>
</html>


<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <form action="#" name="calculator">
    주민등록번호 : <input type="text" name="number1" size="14">
  </form>
  <button onclick="ju_search()">검색</button>
  <p id="demo"></p>

  <script>
    function ju_search() {
      let x = calculator.number1.value;
      let ptn01 = /\d{6}-[12]\d{6}/;
      if(ptn01.test(x)) {
        document.querySelector("#demo").innerHTML = ptn01.exec(x);
      }
    }
  </script>
</body>
</html>

 

 

'웹 프로그래밍 기초 > 객체' 카테고리의 다른 글

내장 객체 (Number)  (0) 2025.04.09
내장 객체 (Math)  (0) 2025.04.09
get메서드 / set메서드  (0) 2025.04.09
내장 객체 (Date)  (0) 2025.04.09
repeat()  (0) 2025.04.09