2023.02.26
자바스크립트 스터디 7회차
공부 사이트: https://poiemaweb.com/
25. 정규표현식
문자열에서 특정 내용을 찾는 데 사용한다.
1) 정규표현식
① 관련 메소드
메소드 | 설명 |
RegExp.prototype.exec | 문자열에서 일치하는 항목에 대한 검색 수행, 배열 반환 |
RegExp.prototype.test | 정규식과 문자열이 일치하는지 검사. true/false 반환 |
String.prototype.match | 문자열과 매치되는 부분 검색 후 반환 |
String.prototype.replace | 일치하는 부분을 대체한 후 새로운 문자열 반환 |
String.prototype.search | 문자열에서 일치하는 부분을 검색. 첫 번째 인덱스 반환(위치) |
String.prototype.split | 문자열을 특정 구분자로 자른 후 배열로 반환 |
const targetStr = "Hello World!";
const regexr = /Wo/ig;
// RegExp 객체의 메소드
console.log(regexr.exec(targetStr));
console.log(regexr.test(targetStr));
// String 객체의 메소
console.log(targetStr.match(regexr));
console.log(targetStr.replace(regexr, "**"));
console.log(targetStr.search(regexr));
console.log(targetStr.split(regexr));
② 플래그
플래그 | 의미 |
i | 대소문자 구별하지 않음 |
g | 문자열 내 모든 패턴 검색 |
m | 문자열의 행이 바뀌어도 검색 계속 진행 |
③ 패턴
패턴 | 의미 |
. | 임의의 묹자 한 개 |
+ | 앞선 패턴을 최소 한 번 이상 반복 |
| | OR |
[] | 대괄호 안 문자들에 대해 OR 적용 |
- | 범위 지정 |
, | 결과 분리 |
\w | 알파벳과 숫자 |
\W | 알파벳과 숫자를 제외 |
^ | 특정 단어로 시작하는지 검사함 /^test/ : test로 시작하는지 검사 |
$ | 특정 단어로 끝나는지 검사함 /test$/ : test로 끝나는지 검사 |
\d | 숫자 하나 |
[^] | 괄호 안에 있는 ^는 부정의 의미 |
\s | 공백문자 하나 |
{} | 수량 지정. a(bc){2,5} : a 또는 2개 이상 5개 이하의 bc를 포함한 문자열 |
2) RegExp 객체
new RegExp(pattern[, flags])
26. String 레퍼 객체
변수 또는 객체의 프로퍼티가 문자열을 값으로 가지고 있다면 String 객체의 별도 생성 없이 String 객체의 프로퍼티/메소드를 사용할 수 있다.
원시 타입 string이 레퍼 객체의 메소드를 사용할 수 있는 이유는 원시 타입으로 메소드 호출 시 원시 타입과 연관된 레퍼 객체로 일시적으로 변환되어 프로토타입 객체를 공유하기 때문이다.
const str = 'Hello world!';
console.log(str.toUpperCase());
1) String Constructor
// String 생성자 함수에 전달된 인자는 모두 문자열로 변환된다.
let strObj = new String('홍길동');
console.log(typeof strObj, strObj);
strObj = new String(1);
console.log(typeof strObj, strObj);
strObj = new String(undefined);
console.log(typeof strObj, strObj);
// new 연산자를 사용하지 않고 생성자 함수 호출 시 객체가 아닌 문자열 리터럴을 반환.
var x = String('홍길동');
console.log(typeof x, x);
2) String Property
String.length | - 문자열 내 문자 개수 반환 |
참고로 String 객체가 length 프로퍼티를 소유하고 있으므로, 유사 배열 객체라는 것을 잊지 말자.
3) String Method
String.prototype.charAt() | - 인수로 index를 전달하여 index에 해당하는 위치의 문자를 반환 |
String.prototype.concat() | - 인수로 전달한 1개 이상의 문자열과 연결하여 새로운 문자열 반환 |
String.prototype.indexOf() | - 인수로 전달한 문자/문자열을 대상 문자열에서 검색한 후 처음 발견된 곳의 인덱스를 반환. 발견하지 못한 경우 -1 |
String.prototype.lastIndexOf() | - 인수로 전달한 문자/문자열을 대상 문자열에서 검색하여 마지막으로 발견된 곳의 인덱스 반환. 발견하지 못한 경우 -1 |
String.prototype.replace() | - 첫 번째 인수로 전달한 문자열/정규표현식을 대상 문자열에서 검색하여 두번째 인수로 전달한 문자열로 대체함. 새로운 문자열 반환 |
String.prototype.split() | - 첫 번째 인수로 전달한 문자열/정규표현식을 대상 문자열에서 검색하여 문자열 구분 후 분리된 각 문자열로 이루어진 배열 반환 |
String.prototype.substring() | - 첫 번째 인수로 전달한 인덱스에 해당하는 문자부터 두 번째 인자에 전달된 인덱스에 해당하는 문자 이전까지 반환 |
String.prototype.slice() | - String.prototype.substring()과 동일. - slice()는 음수 인수 전달 가능 |
String.prototype.toLowerCase() String.prototype.toUpperCase() |
- 대상 문자열 모든 문자를 소문자로 - 대상 문자열 모든 문자를 대문자로 |
String.prototype.trim() | - 대상 문자열 양 끝에 있는 공백문자 제거한 문자열 반환 |
String.prototype.repeat() | - 전달한 인수만큼 반복해 연결한 새로운 문자열 반환 |
String.prototype.includes() | - 인수로 전달한 문자열 포함 유무 검사, 결과는 ture/false |
'프로그래밍 > js' 카테고리의 다른 글
lessons 29. 배열 고차 함수 (0) | 2023.02.28 |
---|---|
lessons 27~28. 배열 (0) | 2023.02.28 |
lessons 22~24. Number, Math, Date 객체 (0) | 2023.02.20 |
lessons 21. 전역 객체 (0) | 2023.02.15 |
lessons 20. 빌트인 객체 (0) | 2023.02.15 |