비밀번호패턴검사

→회원가입/비밀번호변경

닉네임패턴검사

닉네임설정/닉네임변경

이메일양식안맞는걸한번거를까고민

→로그인/비밀번호찾기

fun MutableStateFlow<String>.nicknameValidCheck(): Flow<InputChecker> {
    val regex = "^[0-9가-힣ㄱ-ㅎㅏ-ㅣa-zA-Z\\u318D\\u119E\\u11A2\\u2022\\u2025a\\u00B7\\uFE55]+$"
    return transformWithRegex(regex)
}

fun MutableStateFlow<String>.passwordValidCheck(): Flow<InputChecker> {
    val regex = "^(?=.*[a-zA-Z])(?=.*[0-9]).{8,}+$"
    return transformWithRegex(regex)
}

private fun MutableStateFlow<String>.transformWithRegex(regex: String): Flow<InputChecker> {
    return transform { nickname ->
        when {
            nickname.isEmpty() -> emit(InputChecker.EMPTY)
            Pattern.matches(regex, nickname) -> emit(InputChecker.VALID)
            else -> emit(InputChecker.NOTVALID)
        }
    }
}