Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/leo-henrique/cartao-interativo

Criação de um cartão digital com validações rigorosas utilizando RegEx.
https://github.com/leo-henrique/cartao-interativo

character-class flags javascript lookahead lookbehind quantifiers regex regex-match regex-replace scss vanilla-javascript

Last synced: 4 days ago
JSON representation

Criação de um cartão digital com validações rigorosas utilizando RegEx.

Awesome Lists containing this project

README

        

# Cartão interativo com validação em RegExp | Desafio do Frontend Mentor

Apesar de ser um desafio simples – em que as informações passadas em um formulário apenas é exibida na tela –, aproveitei que os campos consistia em simular a entrada de dados de um cartão comum para impor condições e validações mais amplas no formulário.

Todas as validações que realizei foram baseadas ou criadas com *expressões regulares*. Minha ideia era facilitar e economizar o máximo possível de tempo do usuário, impedindo que caracteres inválidos sejam digitados e formatando cada campo conforme o usuário digita, por exemplo.

Os principais termos de **RegExp (expressões regulares)** que utilizei foram:

* Classes de caracteres
* Flags
* Quantificadores
* Grupos de captura e substituições
* Lookaround com lookbehind e lookahead

![Captura de tela do projeto](https://user-images.githubusercontent.com/72027449/205304175-4f512b1e-39b6-49cc-9770-c7bfb0fcef3e.png)

## 📋 Índice

* [Visão geral](#-visão-geral)
* [Status](#-status)
* [O desafio](#-o-desafio)
* [Links](#-acesse-o-projeto)
* [Desenvolvimento](#%EF%B8%8F-desenvolvimento)
* [Tecnologias utilizadas](#-tecnologias-utilizadas)
* [Aperfeiçoamentos](#-aperfeiçoamentos)
* [Lógica](#lógica)
* [Renderização](#renderização)
* [Formato e substituições](#formato-e-substituições)

## 🔎 Visão geral

### ✅ Status

Finalizado.

### 🏁 O desafio

Para a resolução deste desafio, os usuários devem ser capazes de:

* Visualizar exatamente o layout proposto de acordo com o tamanho da janela de exibição (responsividade)
* Visualizar os estados – pairar, clicar ou selecionar – nos elementos interativos para uma usabilidade adequada
* Preencher o formulário e ver a atualização dos dados do cartão em tempo real
* Receber mensagens de erro quando o formulário for enviado se:
* Algum campo de entrada estiver vazio
* Algum campo de entrada estiver no formato errado

### 🔗 Acesse o projeto

* [Link do projeto](https://leo-henrique.github.io/cartao-interativo/)
* [Desafio no Frontend mentor](https://www.frontendmentor.io/challenges/interactive-card-details-form-XpS8cKZDWw)

## ⚙️ Desenvolvimento

### 💻 Tecnologias utilizadas

* HTML
* CSS / SASS
* Vanilla JavaScript

### 💡 Aperfeiçoamentos

A proposta do desafio em relação a validação era realizar a mesma quando o usuário clicasse no botão que submetia o formulário.

Como meu principal objetivo com este projeto era usar expressões regulares, decidi então deixar o formulário com a validação mais rigorosa possível, ao mesmo tempo que esta validação não complicasse a cabeça do usuário.

#### Lógica

Havia um padrão de informações para cada dado ou campo, como cada um deles possuir um valor padrão, ter uma regex para rejeição, outra para formatação e entre outras informações. Dessa forma, criei um objeto representando cada campo do formulário:

```js
cardholder: {
empty: "Leonardo Henrique",
reject: /[^a-zÀ-öù-Ź\s]/gi,
format: {
character: " ",
reject: /(?