반응형
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
}
}
반응형
'iOS > Tip' 카테고리의 다른 글
문자열 메모리 해제시 지우기 (0) | 2023.05.25 |
---|---|
Frame과 Bounds의 차이 (0) | 2023.05.12 |
스와이프로 뒤로가기(Swipe Back) 처리 (0) | 2023.05.08 |
검색한 문자열의 NSAttributedString 속성 변경 (0) | 2023.05.08 |
UIStackView 하위 뷰 제거하기 (0) | 2023.05.08 |
UIPageViewController Scroll 막기 (0) | 2023.05.08 |
로그 Print하기 (Traceable) (0) | 2023.05.08 |
WKWebView - 캐쉬 삭제하기 (0) | 2022.12.14 |