๐ ์ด ํฌ์คํ ์ NSRegularExpression ์์ด ์ ๊ท์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ํด ํฌ์คํ ํ์์ต๋๋ค. NSRegularExpression์ ๋ํ ๋ด์ฉ์ ์๋ ๋งํฌ๋ค์ ํ์ธํด์ฃผ์ธ์.
- NSRegularExpression ๊ณต์๋ฌธ์
https://developer.apple.com/documentation/foundation/nsregularexpression
- ์ค์ํํธ์์ ์ ๊ท์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ( NSRegularExpression์ ์ฌ์ฉํ ์)
https://www.hackingwithswift.com/articles/108/how-to-use-regular-expressions-in-swift
๊ณ์ ํ๊ธฐ๋ก ์๋ฐ ํ๋ก๊ทธ๋๋ฐ ์์ ์ด ๋๋๊ณ ๋๋ ๋ธ๋ก๊ทธ ํฌ์คํ ์ ์ธ ์งฌ์ด ๋๋์ด ๋๋ค์. 21๋ ๋ ํ๊ณ ์, ์๊ฒฉ์ฆ ํ๊ธฐ๊ธ, ์ค์ํํธ ๊ณต๋ถ๊ธ ๋ฑ ๋ฐ๋ฆฐ ๊ธ์ ๋ง์ง๋ง, ์ ๊ท์์ NSRegularExpression ๊ด๋ จ๊ธ์ด ๋๊ฒ ๋ง๋๋ผ๊ตฌ์. ๊ฐ๋จํ๊ฒ String ๊ฐ์ฒด์ ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์ ๊ทํํ์์ ํจํด๊ณผ ๋ฌธ์์ด์ ๋งค์นญํ๋ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํ๊ณ ์ ํฌ์คํ ํด๋ด ๋๋ค.
1. ์ ๊ทํํ์ ํจํด ์ฒดํํด๋ณด๊ธฐ
์ ์ฌ์ดํธ์์ ์ ๊ท์ ํจํด์ ์ฒดํฌํด๋ณผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ ๊ฐ ์ฌ๋์๋ก ๊ฐ์ธ์ ธ์๋ /ํ๊ธ/๋ก๋ง ๋ ๋๊ธ์์ ๋จ์ด๋ฅผ ์ฐพ๊ณ ์ถ๋ค๋ฉด ์๋์ฒ๋ผ ํด๋ณผ ์ ์์๊ฑฐ์์.
์ ๊ท์์ ๋ง๋ ํ ์คํธ๋ง ํ๋์์ผ๋ก ํ์ด๋ผ์ดํธ ๋ ๊ฒ์ ํ์ธํ ์ ์์ด์.
์ฌ์ดํธ๋ด์์ ์นํธ์ํธ ๋ฉ๋ด๋ฅผ ํด๋ฆญํ๋ฉด ๋ฐ๋ก ์ ๊ท์์ ๊ณต๋ถํ์ง ์์๋ ๋ฐ๋ก ์ฐธ๊ณ ํ์ฌ ์ฌ์ฉํ ์ ์๋ ์์ ๋ค์ด ์๊ณ ์.
์ปค๋ฎค๋ํฐ ํจํด์ ํด๋ฆญํ๋ฉด ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ด๋ฏธ ๋ง๋ค์ด๋ ์ ๊ท์ ํจํด์ ์ฐพ์๋ณผ ์ ์์ด์.
2. SWIFT์์ ์ ๊ทํํ์์ ๋จ ํ์ค๋ก ๊ฐํธํ๊ฒ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
// ๊ผญ import ํด์ฃผ์ด์ผ ๊ฐ๋ฅ
import Foundation
( ๊ฒ์ฌํ ๋ฌธ์์ด_๋๋_๋ฌธ์์ด๋ณ์).range(
of: ์ ๊ท์ํจํด_๋๋_๋ณ์, options: .regularExpression) != nil ))
Foundation์ importํ ํ, ์์ ๊ฐ์ด String์ .range ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ์ ๊ทํํ์ ๋งค์นญ ์ฌ๋ถ๋ฅผ ๊ฒ์ฌํ ์ ์์ต๋๋ค. ๋ฌธ์์ด ๋ณ์์ ๊ฐ์ด ์์ ๊ฒฝ์ฐ ๋ฑ nil๊ฐ์ด ๋ฐํ๋ ์ ์๊ธฐ ๋๋ฌธ์ ํด๋น๊ฐ์ด nil ์ธ์ง ๋จผ์ ๊ฒ์ฌํด์ผ ํฉ๋๋ค. ์์ ๋ฆฌํด๊ฐ์ boolean ๊ฐ์ผ๋ก ๋ฐํ๋๊ธฐ ๋๋ฌธ์ ํด๋น๋ฉ์๋๋ฅผ ์กฐ๊ฑด๋ฌธ์ ์กฐ๊ฑด์ผ๋ก ๋ฃ๊ฑฐ๋, ํน์ ํ์์ ๋ฐ๋ผ ํจ์๋ฅผ ๋ฐ๋ก ๋ง๋ค์ด ํด๋น ํจ์์ ๋ฆฌํด๊ฐ์ผ๋ก ์ง์ ํด์ฃผ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
์๋ฅผ ๋ค์ด ํด๋ํฐ ๋ฒํธ๋ฅผ ์ฒดํฌํ๋ค๊ณ ํ๋ฉด ์๋์ฒ๋ผ ์ฌ์ฉํ ์ ์๊ฒ ์ต๋๋ค.
cellPhonne ๋ณ์์ ๊ฒ์ฌํ ๋ฌธ์์ด์, patternCellPhone์๋ ์ ๊ท์ ํจํด์ ์ ๋ ฅํ๊ณ ํด๋น ์คํธ๋ง์ .range(of: ์ ๊ท์ํจํด(๋๋ ํจํด์ด ์ ์ฅ๋ ๋ฌธ์์ด๋ณ์), options: .regularExpression) ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ isValidCellPhone ๋ณ์์ ์ ์ฅํ์์ต๋๋ค.
String cellPhone = "010-123-1234"
String patternCellPhone = #"^\(?\d{3}\)?[ -]?\d{3,4}[ -]?\d{4}$"#
var isValidCellPhone =
cellPhone.range(of: patternCellPhone, options: .regularExpression ) != nil)
// ์ ๊ท์ ํจํด์ ๋งค์นญ๋ ๊ฒฝ์ฐ true, ์๋ ๊ฒฝ์ฐ false๋ฅผ ๋ณ์ IsValidCellPhone ์ ์ ์ฅํ๋ค.
๋๋ ๋จ์ํ ์๋์ฒ๋ผ ๊ฒ์ฌํ ๋ฌธ์์ด๊ณผ ์ ๊ทํํ์์ ๋ฐ๋ก ๋ฃ์ด ํ์ธํ ์ ์์ต๋๋ค.
print(("010-123-1234".range(of: #"^\(?\d{3,4}\)?[ -]?\d{3,4}[ -]?\d{4}$"# ,
options: .regularExpression)) != nil)
Foundation์ ๋ถ๋ฌ์ค์ง ์์ผ๋ฉด ์๋์ ๊ฐ์ด, String์ range ๋ฉค๋ฒ๊ฐ ์๊ณ , regularExpression ๋ฉค๋ฒ๋ฅผ ์ฐธ์กฐํ ์ ์๋ค๋ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
3. ์ฐธ๊ณ ํ/ํ ๋งํ ๋งํฌ
- ๋ฌธ์ ๋ฐ ๋ถ๋ถ ๋ฌธ์์ด ์ฐพ๊ธฐ
: ํน์ ๋ฌธ์, ๋ฌธ์์ด์ด ํฌํจ๋์ด์๋์ง๋ฅผ ํ์ธํ ์ ์๋ ๋ฉ์๋๋ฅผ ๋ฌธ์ ์๋ซ์ชฝ์์ ํ์ธํ ์ ์์ต๋๋ค.
https://developer.apple.com/documentation/foundation/nsstring/1416849-range
- ์ค์ํํธ ๋ ํผ๋ฐ์ค ๋งค๋ด์ผ์ ํจํด์ ํํ์ ํจํด ์น์ (Expression Pattern)
https://docs.swift.org/swift-book/ReferenceManual/Patterns.html#ID426
- ์ค์ํํธ ๋ญ๊ท์ง ๊ฐ์ด๋ : ๋ฌธ์์ด๊ณผ ์บ๋ฆญํฐ
https://docs.swift.org/swift-book/LanguageGuide/StringsAndCharacters.html
- ์ ํ๊ฐ๋ฐ์ ์ฌ์ดํธ
https://developer.apple.com/documentation/foundation/nsstring/1416849-range
- ์ค์ํํธ์์ ์ ๊ท์ ํํ ์ฌ์ฉํ๊ธฐ (advanced swift)
https://www.advancedswift.com/regular-expressions/#phone-number-regular-expression
- ์ค์ํํธ์์ ์ ๊ท์ ํํ ์ฌ์ฉํ๊ธฐ (ํฐ์คํ ๋ฆฌ)
https://tngusmiso.tistory.com/62
๋ง์น๋ฉฐ
์ค๋๋ ์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
๊ถ๊ธํ ์ ์ด ์๋ค๋ฉด ๋๊ธ๋ก, ๋์์ด ๋์ จ๋ค๋ฉด ๊ณต๊ฐ ๋ถํ๋๋ฆฝ๋๋ค.
ํน์ ์์ ํ๊ฑฐ๋ ํผ๋๋ฐฑํ์ค ๋ด์ฉ ์๋ค๋ฉด ์ธ์ ๋ ๋๊ธ๋ก ๋ถํ๋๋ฆฝ๋๋ค.
๊ฐ์ฌํฉ๋๋ค.
๋๊ธ