Utilizando expressões regulares (regex) na Blip


Reputação 5

Fala comunidade, como cs tão?


Vocês sabem o que são expressões regulares? Não?..então vamos lá…


De forma bem resumida, expressões regulares são padrões utilizados para selecionar combinações de caracteres de um texto.


E para que serve esse bixo?


Hummm, existem algumas possibilidades, vamos a duas delas…


A primeira alternativa é a utilização para detectar uma “intenção” do usuário, imagina que você quer testar se o input do cliente é uma saudação, ai você cria uma condição de saída com meio milhão de combinações, como na imagem abaixo, agora imagina que você tem que criar 10 verificações como essa em um bloco, até para manutenção futura, fica ruim né gente?!



Outra possibilidade, você deseja validar se o input do cliente segue um padrão para cpf, email, cep, telefone…


O blip, inclusive permite que você faça essa validação através da condição corresponde a regex, como na image abaixo…


image


Outra alternativa, é utilizar scripts para processar essa regex, abaixo deixo um exemplo



Com o script acima, as regex são validadas e retornam os valores cadastrados no campo value do array ou Input inesperado caso não haja equivalência…


Com esse valor salvo na variável regex, podemos apenas testa-la e fazer os direcionamentos adequados de forma bem mais clean, segue exemplo:



Ah, lembrei, tem outra aplicação, sabe aquele registro de evento que você quer capturar o input do usuário?


Em vez de capturar o input puro do usuário, gerando um relatório com 1001 inputs diferentes, pode-se utilizar a variável regex que irá registrar a “inteção” do usuário.



Aproveito para deixar o código utilizado no exemplo, caso queiram:


const base = [
{ regex: /^(sim|claro|pode\s?(ser)?|si|yes|desejo|isso|é|ok|t[áa]?\s?b[eo]m)$/, value: "Sim" },
{ regex : /^((n[ãa]o)\s?(é)?)$/, value: "Não" },
{ regex: /^(voltar?)\s(ao?|pro?)\s(in[ií][szc]io?)|volta|voltar$/, value: "Voltar" },
{ regex: /^encerrar$|^sair$|^finalizar$/, value: "Sair"},
{ regex: /^(bom|boa)?\s(dia|tarde|noite)/, value: "Saudação"}
]

function run(input) {

let checkReg = base.find(item => input.match(new RegExp(item.regex, "gmi")));
let regex = checkReg ? checkReg.value : "Input inesperado";

return regex
}

Espero que gostem e que seja útil para o contato inteligente de vocês.



4 comentários

Reputação 7
Crachá +3

Muito bom o guia viu parabens @Bruno_Luz

Reputação 7
Crachá +1

Show @Bruno_Luz, parabéns pelo conteúdo. 👊

Que conteúdo primoroso, será de imenso valor para os redirecionamentos de cascata de exceções. Muito agradecido @Bruno_Luz

Conteúdo primordial, um conhecimento esplendido para nós devs @Bruno_Luz

Comente