A validação de dados é algo com o que todo mundo que trabalha com programação precisa lidar mais cedo ou mais tarde, tanto no frontend quanto no backend. Este processo de realização de validações pode em muitos casos ser trabalhoso, ainda mais dependendo dos critérios de validação necessários na aplicação. Felizmente, existem pacotes que podem nos auxiliar com esta tarefa repetitiva. Neste artigo, conheceremos um destes pacotes que realiza validação de strings: o validator, que está disponível através no npm.

Instalando o Validator

A instalação do pacote é bem simples, e pode ser feita com o comando npm install validator

Uma vez instalado, basta importar o pacote na aplicação utilizando a sintaxe dos módulos do node que é let validator = require('validator'); ou a sintaxe do ES6 import validator from 'validator';

Também é possível utilizar este pacote através de um CDN caso você esteja trabalhando com uma página HTML com o código <script src="<https://unpkg.com/validator@latest/validator.min.js>"></script>

Usando o Validator

As funcionalidades implementadas no pacote Validator são funções que retoranam verdadeiro ou falso para um determinado tipo de validação. Para testarmos se uma string representa um e-mail por exemplo, podemos utilizar a função validator.isEmail, passando para ela a string que desejamos verificar:

const validator = require("validator");

console.log(validator.isEmail("fulano@email.com"));
console.log(validator.isEmail("@emailcom"));
console.log(validator.isEmail("f@e"));

Rodando o código acima, veremos que os valores impressos no console são true, false, false, ou seja apenas o primeiro e-mail é reconhecido como e-mail válido. O método isEmail também pode receber como segundo parâmetro um objeto com alguns parâmetros de configuração. No entanto, não existe uma configuração para verificar se o provedor de e-mail é um provedor válido. Portanto, apesar do pacote validador auxiliar na validação, ele não dispensa o uso de outras técnicas como enviar um e-mail da confirmação para o e-mail que o usuário inserir no cadastro para liberar acesso aos recursos.

Além do método isEmail, o pacote validator também provê uma série de outras funções para fazer a validação de strings.

Algumas funções disponíveis

isAlpha : Esta função verifica se a string contém apenas caracteres alfabéticos e recebe como primeiro parâmetro uma sing e como segundo parâmetro um locale que pode ser um valor como en-IN’, ‘en-US’, ‘fr-FR’,’pt-BR’, ‘pt-PT’, dentre outros. O locale serve para que o validator utilize caracteres alfabéticos daquela localização. Isso que faz com que a palavra caminhão seja reconhecida contendo apenas letras no locale pt-BR, mas não seja reconhecida no contendo apenas letras no locale en-US, por exemplo.

isAlphaNumeric: Esta função verifica se a string contém apenas caracteréres alfabéticos e numéricos. Assim como a função isAlpha, recebe dois parâmetros sendo o primeiro uma string e o segundo o locale sob o qual aquela string precisa ser analizada.

isCreditCard: Verifica se a string representa um número de cartão de crédito. O primeiro parâmetro que a função recebe é a string e o segundo é o provedor do cartão de crétido que pode ser uma das seguintes opções:['amex', 'dinersclub', 'discover', 'jcb', 'mastercard', 'unionpay', 'visa']

isDate: Verifica se a string representa uma data. O primeiro parâmetro da função é a string que queremos validar e o segundo parâmetro é um objeto com algumas opções de configuração.

isEmpty: Verifica se a string passada tem tamanho zero.

isHash: Verifica se a string é um código hash. O primeiro parâmetro é a string e o segundo é o tipo de codificação do hash que queremos avaliar. ['crc32', 'crc32b', 'md4', 'md5', 'ripemd128', 'ripemd160', 'sha1', 'sha256', 'sha384', 'sha512', 'tiger128', 'tiger160', 'tiger192']

isHexadecimal: Verifica se a string é um número hexadecimal.

isIn: Recebe uma string como primeiro parâmetro e um array de strings como segundo. Verifica se a string está entre as possibilidades especificadas no array.

isJWT: Verifica se uma string é um código jwt.

isMobilePhone: Recebe como primeiro parâmetro a string e como segundo o locale que queremos utilizar para validar aquele número.

isStrongPassowrd: Recebe uma string como primeiro parâmetro e como segundo um objeto. Esse objeto contém opções de configuração para definir o que uma senha precisa ter para ser considerada segura. As opções padrão são: { minLength: 8, minLowercase: 1, minUppercase: 1, minNumbers: 1, minSymbols: 1, returnScore: false, pointsPerUnique: 1, pointsPerRepeat: 0.5, pointsForContainingLower: 10, pointsForContainingUpper: 10, pointsForContainingNumber: 10, pointsForContainingSymbol: 10 } Por padrão, a função isStrongPassword retornará um boolean, no entanto, se a propriedade returnScore seja verdadeira, o retorno será a pontuação calculada para aquela senha.

Veja também: