Dart
[Dart] 정규표현식 - 문자열 검색
mjjayce
2025. 3. 18. 17:43
정규표현식
문자열에서 패턴을 검색하는 기능을 수행함
특정 문자가 포함되어 있는지를 찾고, 대체, 문자열 반환, bool 값 반환 등을 처리할 수 있다.
먼저 사용할 패턴(조건)을 선언한다.
RegExp pattern = RegExp(r'패턴');
RegExp는 클래스의 일종이다.
위 코드는 RegExp 객체를 생성한다.
패턴의 정의
기호 | 의미 | 동일한 코드 |
\d | 숫자 | [0-9] |
\w | 문자(숫자, 특수문자'_' 를 포함)(한글 미포함) | [a-zA-Z0-9_] |
\s | 공백 문자(공백, 탭, 줄 바꿈) | |
^ | 문자열의 시작 | |
$ | 문자열의 끝 |
예시
영어 소문자, 숫자만 이용해서 비밀번호를 입력받고 싶은 경우
RegExp pattern = RegExp(r'^[a-z0-9]+$');
닉네임에 한글, 공백만 허용하는 경우
RegExp pattern = RegExp(r'^[가-힣\s]+$');
패턴을 선언한 후 메서드를 사용해 문자열을 검사, 가공하면 된다.
주요 메서드는 다음과 같다.
1. hasMatch
주어진 문자열에 패턴과 일치하는 부분이 하나라도 있는지 확인하여 bool 타입을 반환
bool hasMatch = pattern.hasMatch('문자열');
2. firstMatch
주어진 문자열에서 패턴과 첫 번째로 일치하는 부분을 찾아 Match 객체로 반환
일치하는 부분이 없는 경우 null 반환
Match? firstMatch = pattern.firstMatch('문자열');
3. allMatches
주어진 문자열에서 패턴과 일치하는 모든 부분을 찾아 Match 객체들의 Iterable을 반환
일치하는 부분이 없는 경우 빈 Iterable 반환
Iterable<Match> matches = pattern.allMatches('문자열');
Iterable은 Match의 열거형 타입이다.
toList를 사용하면 List<Match>로 사용하는 것도 가능하다.
다트 콘솔 프로그램 실제 사용예시
-영문 소문자, 영문 대문자, 한글, 공백만 입력 가능