💖 정규 표현식(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 |