Módulo para validação de números de telefone brasileiro (celular e fixo).
Este módulo fornece funções para:
DDDs são códigos de área brasileiros de 2 dígitos. Exemplos:
(phone/is-valid? phone-string)
Valida um telefone (celular ou fixo) com ou sem formatação.
Argumentos:
phone-string (string): Telefone a validar, com ou sem formataçãoRetorna:
true se válido, false caso contrárioExemplos:
(phone/is-valid? "(11) 99999-9999") ; => true (celular)
(phone/is-valid? "(11) 3333-4444") ; => true (fixo)
(phone/is-valid? "11999999999") ; => true (sem formatação)
(phone/is-valid? "1133334444") ; => true (sem formatação)
(phone/is-valid? "(11) 1234-5678") ; => false (DDD inválido)
(phone/is-valid? "123") ; => false (muito curto)
(phone/is-valid-mobile? phone-string)
Valida especificamente um telefone celular.
Argumentos:
phone-string (string): Celular a validarRetorna:
true se for um celular válido, false caso contrárioExemplos:
(phone/is-valid-mobile? "11999999999") ; => true
(phone/is-valid-mobile? "(11) 99999-9999") ; => true
(phone/is-valid-mobile? "1133334444") ; => false (é fixo)
(phone/is-valid-mobile? "(11) 3333-4444") ; => false (é fixo)
(phone/is-valid-landline? phone-string)
Valida especificamente um telefone fixo (landline).
Argumentos:
phone-string (string): Fixo a validarRetorna:
true se for um telefone fixo válido, false caso contrárioExemplos:
(phone/is-valid-landline? "1133334444") ; => true
(phone/is-valid-landline? "(11) 3333-4444") ; => true
(phone/is-valid-landline? "11999999999") ; => false (é celular)
(phone/is-valid-landline? "(11) 99999-9999") ; => false (é celular)
(phone/format-phone phone-string)
Formata um telefone no padrão brasileiro.
Argumentos:
phone-string (string): Telefone a formatar (com ou sem formatação)Retorna:
nil se telefone inválidoExemplos:
(phone/format-phone "11999999999") ; => "(11) 99999-9999"
(phone/format-phone "1133334444") ; => "(11) 3333-4444"
(phone/format-phone "(11) 99999-9999") ; => "(11) 99999-9999"
(phone/format-phone "123") ; => nil
(phone/validation-errors phone-string)
Retorna uma lista de erros de validação do telefone.
Argumentos:
phone-string (string): Telefone a validarRetorna:
Exemplos:
(phone/validation-errors "(11) 99999-9999") ; => []
(phone/validation-errors "123") ; => ["Invalid length" "Invalid area code"]
(phone/validation-errors "(99) 99999-9999") ; => ["Invalid area code"] (DDD não existe)
(phone/validation-errors "123")
; => ["Invalid length"]
(phone/validation-errors "(99) 99999-9999")
; => ["Invalid area code"]
(phone/validation-errors "(11) 1234-5678")
; => ["Invalid phone number"]
(defn validate-phone-input [phone-input]
(if (phone/is-valid? phone-input)
{:status :valid
:phone (phone/format-phone phone-input)
:type (if (phone/is-valid-mobile? phone-input) :mobile :landline)}
{:status :invalid :errors (phone/validation-errors phone-input)}))
(validate-phone-input "11999999999")
; => {:status :valid :phone "(11) 99999-9999" :type :mobile}
(validate-phone-input "1133334444")
; => {:status :valid :phone "(11) 3333-4444" :type :landline}
(defn classify-phones [phone-list]
(reduce (fn [acc phone]
(cond
(phone/is-valid-mobile? phone)
(update acc :mobiles conj (phone/format-phone phone))
(phone/is-valid-landline? phone)
(update acc :landlines conj (phone/format-phone phone))
:else
(update acc :invalid conj phone)))
{:mobiles [] :landlines [] :invalid []}
phone-list))
(classify-phones ["11999999999" "1133334444" "abc" "(21) 98765-4321"])
; => {:mobiles ["(11) 99999-9999" "(21) 98765-4321"]
; :landlines ["(11) 3333-4444"]
; :invalid ["abc"]}
(defn validate-contact-form [form-data]
(let [phone-validation (phone/validation-errors (:phone form-data))]
(if (empty? phone-validation)
{:status :valid :data (assoc form-data :phone (phone/format-phone (:phone form-data)))}
{:status :invalid :errors {:phone phone-validation}})))
(defn send-sms [phone-number message]
(if (phone/is-valid-mobile? phone-number)
{:status :sending
:to (phone/format-phone phone-number)
:message message}
{:status :error
:reason "Invalid mobile phone number"
:errors (phone/validation-errors phone-number)}))
| Estado | DDDs |
|---|---|
| SP | 11, 12, 13, 14, 15, 16, 17, 18, 19 |
| RJ | 21, 22, 24 |
| MG | 31, 32, 33, 34, 35, 37, 38 |
| BA | 71, 73, 74, 75, 77 |
| RS | 51, 53, 54, 55 |
| SC | 47, 48, 49 |
| PR | 41, 42, 43, 44, 45, 46 |
| PE | 81, 87 |
| CE | 85, 88 |
| PA | 91, 93, 94 |
| GO | 62, 64 |
| DF | 61 |
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |