iOS/Tip
문자열 유효성 검사하기
까칠코더
2023. 5. 8. 14:16
반응형
String을 사용하다가 유효성을 검사해야 하는 경우가 있습니다.
// MARK: - 문자열 유효성 검사
extension String {
/// 패턴이 유효한지 여부
/// - Parameter pattern: 확인할 패턴
/// - Returns: 패턴의 유효 여부
private func isValid(pattern: String) -> Bool {
range(of: pattern, options: .regularExpression) != nil
}
/// 최소한의 문자열 수를 가지고 있는지 여부
/// - Parameter count: 최소 문자열 수
/// - Returns: 최소 문자열 수 이상이면 true, 아니면 false
func isValidCount(_ count: Int) -> Bool {
isValid(pattern: "(?=.{\(count),})")
}
/// 최소 1개 이상의 대문자를 가지고 있는지 여부
var isHasCapital: Bool {
isValid(pattern: "(?=.*[A-Z])")
}
/// 최소 1개 이상의 숫자를 가지고 있는지 여부
var isHasDigit: Bool {
isValid(pattern: #"(?=.*\d)"#)
}
/// 모두 숫자로 되어 있는지 여부
var isOnlyDigit: Bool {
isValid(pattern: "^[0-9]*$")
}
/// 최소 1개 이상의 특수문자가지고 있는지 여부
var isHasSpecial: Bool {
isValid(pattern: "(?=.*[ !$%&?._-])")
}
/// 이메일 포멧 여부
var isValidEmail: Bool {
isValid(pattern: #"^\S+@\S+\.\S+$"#)
}
/// 백스페이스 키 여부
var isBackspace: Bool {
guard let char = cString(using: String.Encoding.utf8) else { return false }
return strcmp(char, "\\b") == -92
}
/// 이미지 문자 포함 여부
var isHasEmoji: Bool {
unicodeScalars.first { $0.properties.isEmojiPresentation } != nil
}
}
반응형