문자열을 검색하고 조작하는 데 사용되는 좋은 도구입니다. 정규 표현식은 특정한 패턴을 정의하여 문자열을 매칭하거나 대체하는 작업을 수행할 수 있습니다. 자주 사용되는 정규 표현식 패턴은 다음과 같습니다.
.
: 임의의 한 문자+
: 앞의 패턴이 1번 이상 반복?
: 앞의 패턴이 0번 또는 1번 반복\\d
: 숫자 문자\\w
: 단어 문자 (알파벳, 숫자, 밑줄)\\s
: 공백 문자 (스페이스, 탭, 줄 바꿈)[abc]
: a, b, c 중 하나의 문자[^abc]
: a, b, c가 아닌 문자|
: OR 연산자(...)
: 그룹화^
: 문자열의 시작$
: 문자열의 끝등등..
정규 표현식을 사용하여 XML 태그 및 속성을 파싱할 수 있습니다.
태그의 속성을 추출하는 정규 표현식은 다음과 같습니다.
const attrRegex = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)\\s*=\\s*"([^"]*)"/g;
이 정규 표현식은 속성 이름과 값을 추출하는데 사용됩니다.
/
/
([a-zA-Z_:][-a-zA-Z0-9_:.]*)
([a-zA-Z_:])
: 대괄호 안의 문자는 속성 이름의 첫 번째 문자를 나타내며, 영어 대문자와 소문자, 밑줄(_
), 그리고 콜론(:
)을 포함합니다.([-a-zA-Z0-9_:.]*)
: 대괄호 안의 문자는 속성 이름의 나머지 문자를 나타내며, 영어 대문자와 소문자, 숫자, 밑줄(_
), 하이픈(-
), 콜론(:
), 그리고 점(.
)을 포함합니다. *
는 이 문자가 0번 이상 반복됨을 의미합니다.([a-zA-Z_:][-a-zA-Z0-9_:.]*)
는 HTML 속성 이름에 해당하는 부분을 캡처합니다.\s*=\s*
\s*
: 0개 이상의 공백 문자를 나타냅니다.=
: 등호 문자를 나타냅니다.\s*
: 0개 이상의 공백 문자를 나타냅니다.\s*=\s*
는 속성 이름과 속성 값 사이의 등호를 포함한 공백을 허용합니다."([^"]*)"
"
: 큰따옴표를 나타냅니다.([^"]*)
: 큰따옴표로 끝나지 않는 0개 이상의 문자를 나타내며, 속성 값을 캡처합니다. 대괄호 안의 ^
는 not을 의미하여 큰따옴표를 제외한 모든 문자를 포함합니다."
: 큰따옴표를 나타냅니다."([^"]*)"
는 큰따옴표로 둘러싸인 속성 값을 캡처합니다.g
match
const rootMatch = this.pathString.match(/^([a-zA-Z]:\\\\|\\/)/);
^
: 문자열의 시작을 의미.([a-zA-Z]:\\\\|\\/)
: 대소문자 알파벳 문자로 시작하는 드라이브 문자(예: C:)와 그 뒤에 오는 백슬래시(\\
) 또는 슬래시(/
)를 의미.const extMatch = lastComponent.match(/(\\.[^\\.]+)$/);
(\\.[^\\.]+)
: 점(.
)으로 시작하고 점(.
)이 아닌 문자로 이루어진 문자열을 의미. .
이 있으면 확장자로 가져옴.$
: 문자열의 끝을 의미. 이는 확장자가 파일명 끝에 위치해야 한다는 것을 나타냄.가장 많이 사용되는 정규 표현식 패턴 순으로 정리한 치트 시트를 보여드리겠습니다. 각 패턴과 그 용도를 포함하여 정리하였습니다.
.
: 임의의 한 문자 (줄바꿈 문자는 제외)
a.b
는 "aab", "acb" 등과 일치^
: 문자열의 시작
^abc
는 "abcdef"와 일치$
: 문자열의 끝
abc$
는 "defabc"와 일치*
: 앞의 패턴이 0번 이상 반복
ab*c
는 "ac", "abc", "abbc" 등과 일치+
: 앞의 패턴이 1번 이상 반복
ab+c
는 "abc", "abbc" 등과 일치하지만 "ac"는 일치하지 않음?
: 앞의 패턴이 0번 또는 1번 반복
ab?c
는 "ac"와 "abc"에 일치|
: OR 연산자
a|b
는 "a" 또는 "b"와 일치(...)
: 그룹화
(abc)+
는 "abc", "abcabc" 등과 일치[abc]
: a, b, c 중 하나의 문자
[abc]
는 "a", "b", "c" 중 하나에 일치[^abc]
: a, b, c가 아닌 문자
[^abc]
는 "d", "e" 등과 일치하지만 "a", "b", "c"는 제외[a-z]
: a에서 z까지의 소문자 중 하나
[a-z]
는 "a", "b", ..., "z"와 일치[A-Z]
: A에서 Z까지의 대문자 중 하나
[A-Z]
는 "A", "B", ..., "Z"와 일치[0-9]
: 0에서 9까지의 숫자 중 하나
[0-9]
는 "0", "1", ..., "9"와 일치\d
: 숫자 문자 [0-9]
\d
는 "0", "1", ..., "9"와 일치\D
: 숫자가 아닌 문자
\D
는 숫자가 아닌 모든 문자와 일치\w
: 단어 문자 (알파벳, 숫자, 밑줄)
\w
는 "a", "b", ..., "z", "A", "B", ..., "Z", "0", "1", ..., "9", "_"와 일치\W
: 단어 문자가 아닌 문자
\W
는 단어 문자가 아닌 모든 문자와 일치\s
: 공백 문자 (스페이스, 탭, 줄 바꿈)
\s
는 공백 문자와 일치\S
: 공백 문자가 아닌 문자
\S
는 공백 문자가 아닌 모든 문자와 일치\b
: 단어 경계
\bword\b
는 "word"와 일치하지만 "sword"나 "wording"과는 일치하지 않음\B
: 단어 경계가 아님
\Bword\B
는 "swording" 등과 일치하지만 "word"와는 일치하지 않음{n}
: 정확히 n번 반복
a{3}
는 "aaa"와 일치{n,}
: n번 이상 반복
a{2,}
는 "aa", "aaa", "aaaa" 등과 일치{n,m}
: n번 이상 m번 이하 반복
a{2,3}
는 "aa", "aaa"와 일치하지만 "a", "aaaa"는 일치하지 않음이메일 주소 검증:
/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/
전화번호 형식:
/^\d{3}-\d{3,4}-\d{4}$/
URL 검증:
/^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/
우편번호 (한국):
/^\d{3}-\d{3}$/
날짜 형식 (YYYY-MM-DD):
/^\d{4}-\d{2}-\d{2}$/