Notice
Recent Posts
Recent Comments
Link
쯔이's Dev
JS(11). 정규표현식 본문
반응형
정규표현식을 만드는 두 가지 방법:
- new RegExp(): 생성자 함수로 정규표현식 객체 생성.
- 리터럴 표기: 슬래시(/)를 사용하여 간단히 표현.
const regExp1 = new RegExp("script"); // 방법 1
const regExp2 = /script/; // 방법 2
위 예제에서는 script라는 패턴을 찾는 정규표현식을 만듭니다.
1. test() 메서드
regExp2.test(str1);
/test/.test("This is a test"); // true
/hello/.test("world"); // false
문자열에서 정규표현식과 일치하는 부분이 있는지 확인하여 true 또는 false 반환.
2. exec() 메서드
regExp2.exec(str1);
/world/.exec("Hello world"); // "world"
/test/.exec("Hello world"); // null
문자열에서 정규표현식과 일치하는 값을 찾아 해당 값중 가장 처음에 찾은 값ㅇ르 반환. 찾은 값이 없으면 null 반환.
3. replace() 메서드
str1.replace(regExp2, "ㅇㅇ");
"hello world".replace(/world/, "JavaScript"); // "hello JavaScript"
문자열에서 정규표현식과 일치하는 값을 찾아 지정한 문자열로 대체.
정규표현식의 추가 활용
1. 플래그 사용
- 정규표현식에는 검색 조건을 제어하는 플래그를 사용할 수 있습니다:
- g: 전역 검색 (모든 일치값 찾기)
- i: 대소문자 구분하지 않음
- m: 여러 줄 모드
const str = "Hello World! hello again!";
// 대소문자 구분 없이 모든 "hello" 찾기
const regExp = /hello/gi;
console.log(regExp.test(str)); // true
console.log(str.replace(regExp, "Hi")); // "Hi World! Hi again!"
2. 패턴 활용
- 특정 조건에 따라 문자열을 검색:
- 숫자만 찾기: /\d+/
- 알파벳만 찾기: /[a-zA-Z]+/
- 이메일 형식 찾기: /\w+@\w+\.\w+/
const email = "user@example.com";
const emailPattern = /\w+@\w+\.\w+/;
console.log(emailPattern.test(email)); // true
console.log(email.match(emailPattern)); // ["user@example.com"]
3. 단어 단위로 검색
let regExp = /\bjquery\b/; // 정확히 'jquery'라는 단어만 찾음
area2.innerHTML += '/\\bjquery\\b/ : ' + regExp.test(str) + "<br>";
- \b는 단어 경계를 의미.
- 결과: true(단어 jquery가 포함되어 있음).
정규표현식의 메타문자 예시
. | 임의의 한 문자 | /a.b/ → "axb" | a와 b 사이에 어떤 문자가 와도 일치합니다. |
* | 0개 이상 반복 | /a*/ → "aaab" | a가 0번 이상 반복되는 모든 경우에 일치합니다. |
+ | 1개 이상 반복 | /a+/ → "aaa" | a가 1번 이상 반복되는 경우에만 일치합니다. |
? | 0개 또는 1개 | /colou?r/ → "color" | u가 없거나 1번 포함된 경우에 일치합니다. |
\d | 숫자 | /\d/ → "abc123" | 문자열에서 숫자(0-9)를 찾습니다. |
\w | 알파벳, 숫자, 밑줄(_) | /\w+/ → "hello_123" | 단어를 구성하는 문자(알파벳, 숫자, _)의 1개 이상 반복에 일치합니다. |
\s | 공백 | /\s/ → "a b" | 공백 문자(스페이스, 탭 등)에 일치합니다. |
^ | 문자열의 시작 | /^hello/ → "hello" | 문자열이 hello로 시작하는 경우에 일치합니다. |
$ | 문자열의 끝 | /world$/ → "world" | 문자열이 world로 끝나는 경우에 일치합니다. |
728x90
반응형