특정한 규칙 또는 형식, 형태를 가지고 있는 문자열을 정규식/정규표현식(Regular Expression)이라고 부릅니다.
(정규식의 대표적인 예로는 아래와 같습니다.)
✅ 전화번호의 정규표현식
"010-1234-5678" 형태의 정규식 표현은 아래와 같습니다.
var phoneNumberRegularExpression = #"[0-9]{3}\-[0-9]{4}\-[0-9]{4}"# // [0-9]{3} -> 숫자 0~9를 사용한 3자리의 문자 // \- -> 숫자 사이의 문자 (010-1234)
"010-1234-5678", "010.1234.5678", "010 1234 5678", "01012345678" 와 같은 다양한 형태의 전화번호 표현식을 모두 수용하고 있는 정규표현식은 아래와 같습니다.
var phoneNumberRegularExpression = #"[0-9]{3}[- .]?[0-9]{4}[- .]?[0-9]{4}"# // [0-9]{3} -> 숫자 0~9를 사용한 3자리의 문자 // [- .] -> 숫자 사이의 문자 (010-1234, 010.1234, 010 1234) // ? -> 숫자 사이에 문자가 없을 수 도 있음 (0101234)
✅ 이메일의 정규표현식
"abcd@naver.com" 형태의 정규식 표현은 아래와 같습니다.
var emailRegularExpression = #".*@.*\..*"# // .* -> 문자의 종류, 문자열의 길이의 한계가 없는 모든 문자열 // @ -> "@" 문자를 포함 (XXX@XXX) // \. -> "." 문쟈럴 포함 (XXX.com)
✅ 우편번호의 정규표현식
"04524" 형태의 정규식 표현은 아래와 같습니다.
var postcodeRegularExpression = #"[0-9]{5}"#
Swift에서 정규표현식은 문자열의 .range(of: 정규표현식, options: .regularExpression)
메서드와 해당 옵션 프로퍼티(.regularExpression
)를 같이 사용하는 경우가 많습니다.
✅ 정규표현식의 사용
var phoneNumber = "010-1234-5678" var phoneNumberRegularExpression = #"[0-9]{3}[- .]?[0-9]{4}[- .]?[0-9]{4}"# if let _ = phoneNumber.range(of: phoneNumberRegularExpression, options: .regularExpression){ print("정규식에 포함되는 형식입니다.") } else{ print("정확한 표현식이 아닙니다.") } /*출력 결과 정규식에 포함되는 형식입니다. */
var phoneNumber = "010@1234@5678" var phoneNumberRegularExpression = #"[0-9]{3}[- .]?[0-9]{4}[- .]?[0-9]{4}"# if let _ = phoneNumber.range(of: phoneNumberRegularExpression, options: .regularExpression){ print("정규식에 포함되는 형식입니다.") } else{ print("정확한 표현식이 아닙니다.") } /*출력 결과 정확한 표현식이 아닙니다. */