{"id":667,"date":"2024-04-21T16:07:40","date_gmt":"2024-04-21T19:07:40","guid":{"rendered":"https:\/\/thiagorossi.com.br\/blog\/?p=667"},"modified":"2025-11-06T09:51:04","modified_gmt":"2025-11-06T12:51:04","slug":"validacao-de-formulario-html","status":"publish","type":"post","link":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/","title":{"rendered":"Valida\u00e7\u00e3o de formul\u00e1rio HTML"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>\n<p class=\"has-medium-font-size wp-block-paragraph\">A valida\u00e7\u00e3o de formul\u00e1rios \u00e9 a primeira linha de defesa contra dados incorretos ou maliciosos. O HTML5 revolucionou esse processo ao introduzir atributos nativos que permitem uma valida\u00e7\u00e3o r\u00e1pida e eficiente no <strong>lado do cliente<\/strong> (diretamente no navegador), melhorando a experi\u00eancia do usu\u00e1rio (UX) com <em>feedback<\/em> imediato.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Neste artigo, vamos explorar os atributos <code>required<\/code>, <code>pattern<\/code> e <code>title<\/code>, que s\u00e3o as ferramentas essenciais para construir formul\u00e1rios robustos, e discutiremos por que a valida\u00e7\u00e3o HTML deve ser sempre complementada pela seguran\u00e7a do servidor.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">1. Atributo <code>required<\/code>: A Obrigatoriedade Simples<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O atributo <code>required<\/code> \u00e9 a forma mais simples de valida\u00e7\u00e3o.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Fun\u00e7\u00e3o:<\/strong> Indica que um campo (<code>&lt;input><\/code>, <code>&lt;textarea><\/code>, <code>&lt;select><\/code>) n\u00e3o pode estar vazio para que o formul\u00e1rio seja submetido.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Comportamento:<\/strong> Se o campo estiver vazio, o navegador exibe uma mensagem de erro padr\u00e3o e impede o envio.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Aplica-se a:<\/strong> Todos os campos onde o valor \u00e9 fundamental (ex: Nome, E-mail).<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Exemplo:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTML<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;label for=\"nome\"&gt;Nome Completo&lt;\/label&gt;\n&lt;input type=\"text\" id=\"nome\" name=\"nome_completo\" required&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<label for=\"nome\">Nome Completo<\/label>\n<input type=\"text\" id=\"nome\" name=\"nome_completo\" required>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">2. Atributo <code>pattern<\/code>: Valida\u00e7\u00e3o por Express\u00f5es Regulares<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O atributo <code>pattern<\/code> \u00e9 a ferramenta mais poderosa do HTML5 para valida\u00e7\u00e3o. Ele permite definir uma <strong>Express\u00e3o Regular (Regex)<\/strong> que o valor do campo deve corresponder.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Fun\u00e7\u00e3o:<\/strong> Garante que o formato ou a estrutura do dado inserido esteja correta (ex: CPF, CEP, formato de telefone).<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Vantagem:<\/strong> Permite valida\u00e7\u00f5es complexas que v\u00e3o al\u00e9m do que os tipos de <code>input<\/code> nativos podem fazer.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Exemplo 1: Formato de E-mail (Aprofundado)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Embora <code>type=\"email\"<\/code> fa\u00e7a uma valida\u00e7\u00e3o b\u00e1sica, o <code>pattern<\/code> pode refinar o formato.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTML<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;input type=\"email\" name=\"email_contato\" \n       pattern=\"&#91;a-zA-Z0-9._-]+@&#91;a-zA-Z0-9.-]+\\.&#91;a-zA-Z]{2,4}\" \n       required&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<input type=\"email\" name=\"email_contato\" \n       pattern=\"[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}\" \n       required>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">Exemplo 2: Padr\u00e3o de Senha Complexa<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Vamos desmembrar a Express\u00e3o Regular do seu exemplo para entender a valida\u00e7\u00e3o:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Snippet de c\u00f3digo<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(?=.*\\d)(?=.*&#91;A-Z]).{8,}\n<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Parte da Regex<\/strong><\/td><td><strong>Significado<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong><code>(?=.*\\d)<\/code><\/strong><\/td><td>Deve conter pelo menos um d\u00edgito (n\u00famero de 0-9).<\/td><\/tr><tr><td><strong><code>(?=.*[A-Z])<\/code><\/strong><\/td><td>Deve conter pelo menos uma letra mai\u00fascula.<\/td><\/tr><tr><td><strong><code>.{8,}<\/code><\/strong><\/td><td>Deve ter um comprimento m\u00ednimo de 8 caracteres.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>C\u00f3digo HTML:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTML<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;input type=\"password\" name=\"senha\" \n       pattern=\"(?=.*\\d)(?=.*&#91;A-Z]).{8,}\" \n       required&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<input type=\"password\" name=\"senha\" \n       pattern=\"(?=.*\\d)(?=.*[A-Z]).{8,}\" \n       required>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">3. Mensagens de Erro e UX: O Atributo <code>title<\/code><\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Quando um <code>pattern<\/code> falha, a mensagem de erro padr\u00e3o do navegador pode ser gen\u00e9rica. O atributo <code>title<\/code> permite fornecer uma dica ao usu\u00e1rio sobre o formato esperado.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Fun\u00e7\u00e3o:<\/strong> Exibe o texto do <code>title<\/code> quando a valida\u00e7\u00e3o falha.<\/li>\n\n\n\n<li class=\"has-medium-font-size\"><strong>Melhor Pr\u00e1tica:<\/strong> Descreva o padr\u00e3o esperado para que o usu\u00e1rio saiba como corrigir o erro.<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Exemplo com Feedback de Padr\u00e3o:<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTML<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;input type=\"password\" name=\"senha\" \n       pattern=\"(?=.*\\d)(?=.*&#91;A-Z]).{8,}\" \n       required \n       title=\"A senha deve ter 8+ caracteres, incluir 1 mai\u00fascula e 1 n\u00famero.\"&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<input type=\"password\" name=\"senha\" \n       pattern=\"(?=.*\\d)(?=.*[A-Z]).{8,}\" \n       required \n       title=\"A senha deve ter 8+ caracteres, incluir 1 mai\u00fascula e 1 n\u00famero.\">\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"has-medium-font-size wp-block-paragraph\">\u26a0\ufe0f <strong>Limita\u00e7\u00e3o de <code>title<\/code>:<\/strong> Embora \u00fatil, o <code>title<\/code> n\u00e3o \u00e9 a solu\u00e7\u00e3o ideal para acessibilidade e UX, pois nem sempre \u00e9 exibido claramente. A melhor pr\u00e1tica em ambientes profissionais \u00e9 usar o HTML5 para a valida\u00e7\u00e3o b\u00e1sica e o JavaScript para personalizar as mensagens de erro e o <em>feedback<\/em> visual.<\/p>\n<\/blockquote>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">4. Valida\u00e7\u00e3o por Restri\u00e7\u00e3o: Atributos <code>min<\/code>, <code>max<\/code>, <code>minlength<\/code><\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Esses atributos de restri\u00e7\u00e3o funcionam como valida\u00e7\u00e3o complementar e dispensam o uso de <code>pattern<\/code> para limites simples.<\/p>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>Atributo<\/strong><\/td><td><strong>Uso<\/strong><\/td><td><strong>Aplica-se a<\/strong><\/td><td><strong>Exemplo<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong><code>min<\/code> \/ <code>max<\/code><\/strong><\/td><td>Define valores m\u00ednimo e m\u00e1ximo permitidos.<\/td><td><code>type=\"number\"<\/code>, <code>type=\"date\"<\/code>, etc.<\/td><td><code>&lt;input type=\"number\" min=\"18\" max=\"99\"&gt;<\/code><\/td><\/tr><tr><td><strong><code>minlength<\/code><\/strong><\/td><td>Define o n\u00famero m\u00ednimo de caracteres exigido.<\/td><td><code>type=\"text\"<\/code>, <code>type=\"password\"<\/code>, etc.<\/td><td><code>&lt;input type=\"text\" minlength=\"5\"&gt;<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">5. O Papel do <code>type=\"hidden\"<\/code> na Valida\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O campo oculto (<code>type=\"hidden\"<\/code>) n\u00e3o \u00e9 uma ferramenta de valida\u00e7\u00e3o direta, mas \u00e9 essencial para o fluxo de dados em um formul\u00e1rio:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\"><strong>Fun\u00e7\u00e3o:<\/strong> Transmite dados que o usu\u00e1rio n\u00e3o precisa ver ou interagir, mas que s\u00e3o cruciais para o servidor (ex: um ID, um <em>token<\/em> de seguran\u00e7a ou uma <strong>regra de valida\u00e7\u00e3o<\/strong>).<\/li>\n<\/ul>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Exemplo (Metadados para o Servidor):<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTML<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;input type=\"hidden\" name=\"versao_form\" value=\"v2.1\"&gt;\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\ud83d\uded1 Alerta de Seguran\u00e7a: A Valida\u00e7\u00e3o do Lado do Servidor<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>A valida\u00e7\u00e3o HTML \u00e9 um recurso de UX, n\u00e3o de seguran\u00e7a.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li class=\"has-medium-font-size\">Um usu\u00e1rio malicioso pode desabilitar o JavaScript ou manipular o HTML diretamente para contornar qualquer valida\u00e7\u00e3o de cliente.<\/li>\n\n\n\n<li class=\"has-medium-font-size\">\u00c9 <strong>fundamental<\/strong> que <strong>toda<\/strong> valida\u00e7\u00e3o (obrigat\u00f3rios, padr\u00f5es, limites) seja <strong>repetida<\/strong> no lado do servidor (com linguagens como PHP, Python, Node.js) antes que os dados sejam processados ou armazenados.<\/li>\n<\/ul>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">\u2705 Conclus\u00e3o Valida\u00e7\u00e3o de formul\u00e1rio HTML<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">A valida\u00e7\u00e3o nativa do HTML5 \u00e9 um recurso poderoso para criar <em>feedback<\/em> imediato e amig\u00e1vel ao usu\u00e1rio, usando atributos como <strong><code>required<\/code><\/strong>, <strong><code>pattern<\/code><\/strong> e os limites de <strong><code>min<\/code> \/ <code>max<\/code><\/strong>. Ao utiliz\u00e1-los de forma inteligente e sempre mantendo o foco na seguran\u00e7a do lado do servidor, voc\u00ea pode garantir a integridade dos dados e otimizar a usabilidade do seu formul\u00e1rio.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Toda jornada tem um in\u00edcio, e o in\u00edcio para se tornar um desenvolvedor web \u00e9 dominar as seguintes tecnologias, que voc\u00ea encontra aqui mesmo:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/html\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp\" alt=\"HTML\" class=\"wp-image-600\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">HTML<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/css\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux.webp\" alt=\"CSS\" class=\"wp-image-702\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">CSS<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/javascript\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript.webp\" alt=\"Javascript\" class=\"wp-image-804\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">JavaScript<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">E se voc\u00ea gosta do nosso conte\u00fado, n\u00e3o deixe de contribuir adquirindo os servi\u00e7os e produtos dos nossos apoiadores e empresas que somos associados:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hostinger.com.br\/?REFERRALCODE=1THIAGO62\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/03\/hostinger.png\" alt=\"Hospedagem Hostinger\" class=\"wp-image-92\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNDYlc\"><img decoding=\"async\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/ofertas-amazon.png\" alt=\"Ofertas Amazon\" class=\"wp-image-1308\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNKmt0\"><img decoding=\"async\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/amazonprime.png\" alt=\"Amazon Prime\" class=\"wp-image-1307\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>A valida\u00e7\u00e3o de formul\u00e1rios \u00e9 a primeira linha de defesa contra dados incorretos ou maliciosos&#8230;.<\/p>\n","protected":false},"author":1,"featured_media":600,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-667","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-html","wpcat-6-id"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Valida\u00e7\u00e3o de formul\u00e1rio HTML - BLOG THIAGO ROSSI<\/title>\n<meta name=\"description\" content=\"Valida\u00e7\u00e3o de formul\u00e1rio HTML: Neste artigo, vamos explorar os atributos required, pattern e hidden, que s\u00e3o ferramentas poderosas para ...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Valida\u00e7\u00e3o de formul\u00e1rio HTML - BLOG THIAGO ROSSI\" \/>\n<meta property=\"og:description\" content=\"Valida\u00e7\u00e3o de formul\u00e1rio HTML: Neste artigo, vamos explorar os atributos required, pattern e hidden, que s\u00e3o ferramentas poderosas para ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/\" \/>\n<meta property=\"og:site_name\" content=\"BLOG THIAGO ROSSI\" \/>\n<meta property=\"article:published_time\" content=\"2024-04-21T19:07:40+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-06T12:51:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"758\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Thiago Rossi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thiago Rossi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/\"},\"author\":{\"name\":\"Thiago Rossi\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\"},\"headline\":\"Valida\u00e7\u00e3o de formul\u00e1rio HTML\",\"datePublished\":\"2024-04-21T19:07:40+00:00\",\"dateModified\":\"2025-11-06T12:51:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/\"},\"wordCount\":744,\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/html.webp\",\"articleSection\":[\"HTML\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/\",\"name\":\"Valida\u00e7\u00e3o de formul\u00e1rio HTML - BLOG THIAGO ROSSI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/html.webp\",\"datePublished\":\"2024-04-21T19:07:40+00:00\",\"dateModified\":\"2025-11-06T12:51:04+00:00\",\"description\":\"Valida\u00e7\u00e3o de formul\u00e1rio HTML: Neste artigo, vamos explorar os atributos required, pattern e hidden, que s\u00e3o ferramentas poderosas para ...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/html.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/html.webp\",\"width\":758,\"height\":426,\"caption\":\"HTML\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/validacao-de-formulario-html\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Valida\u00e7\u00e3o de formul\u00e1rio HTML\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"name\":\"THIAGO ROSSI\",\"description\":\"Mais de 20 anos de experi\u00eancia no mercado de TI!\",\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"alternateName\":\"TR | CURSO WEB DEV\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\",\"name\":\"THIAGO ROSSI\",\"alternateName\":\"TR | CURSO WEB DEV\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"width\":300,\"height\":300,\"caption\":\"THIAGO ROSSI\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\",\"name\":\"Thiago Rossi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"caption\":\"Thiago Rossi\"},\"description\":\"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \\\"GDD \u2013 O Guia Definitivo\\\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.\",\"sameAs\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\",\"https:\\\/\\\/instagram.com\\\/thiagorossix86\",\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"],\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/author\\\/thiagorossi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Valida\u00e7\u00e3o de formul\u00e1rio HTML - BLOG THIAGO ROSSI","description":"Valida\u00e7\u00e3o de formul\u00e1rio HTML: Neste artigo, vamos explorar os atributos required, pattern e hidden, que s\u00e3o ferramentas poderosas para ...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/","og_locale":"pt_BR","og_type":"article","og_title":"Valida\u00e7\u00e3o de formul\u00e1rio HTML - BLOG THIAGO ROSSI","og_description":"Valida\u00e7\u00e3o de formul\u00e1rio HTML: Neste artigo, vamos explorar os atributos required, pattern e hidden, que s\u00e3o ferramentas poderosas para ...","og_url":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/","og_site_name":"BLOG THIAGO ROSSI","article_published_time":"2024-04-21T19:07:40+00:00","article_modified_time":"2025-11-06T12:51:04+00:00","og_image":[{"width":758,"height":426,"url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp","type":"image\/webp"}],"author":"Thiago Rossi","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Thiago Rossi","Est. tempo de leitura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/#article","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/"},"author":{"name":"Thiago Rossi","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87"},"headline":"Valida\u00e7\u00e3o de formul\u00e1rio HTML","datePublished":"2024-04-21T19:07:40+00:00","dateModified":"2025-11-06T12:51:04+00:00","mainEntityOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/"},"wordCount":744,"publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp","articleSection":["HTML"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/","url":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/","name":"Valida\u00e7\u00e3o de formul\u00e1rio HTML - BLOG THIAGO ROSSI","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/#primaryimage"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp","datePublished":"2024-04-21T19:07:40+00:00","dateModified":"2025-11-06T12:51:04+00:00","description":"Valida\u00e7\u00e3o de formul\u00e1rio HTML: Neste artigo, vamos explorar os atributos required, pattern e hidden, que s\u00e3o ferramentas poderosas para ...","breadcrumb":{"@id":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/#primaryimage","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp","width":758,"height":426,"caption":"HTML"},{"@type":"BreadcrumbList","@id":"https:\/\/thiagorossi.com.br\/blog\/validacao-de-formulario-html\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thiagorossi.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Valida\u00e7\u00e3o de formul\u00e1rio HTML"}]},{"@type":"WebSite","@id":"https:\/\/thiagorossi.com.br\/blog\/#website","url":"https:\/\/thiagorossi.com.br\/blog\/","name":"THIAGO ROSSI","description":"Mais de 20 anos de experi\u00eancia no mercado de TI!","publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"alternateName":"TR | CURSO WEB DEV","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thiagorossi.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/thiagorossi.com.br\/blog\/#organization","name":"THIAGO ROSSI","alternateName":"TR | CURSO WEB DEV","url":"https:\/\/thiagorossi.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","width":300,"height":300,"caption":"THIAGO ROSSI"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/linkedin.com\/in\/thiagox86"]},{"@type":"Person","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87","name":"Thiago Rossi","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","caption":"Thiago Rossi"},"description":"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \"GDD \u2013 O Guia Definitivo\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.","sameAs":["https:\/\/thiagorossi.com.br\/blog","https:\/\/instagram.com\/thiagorossix86","https:\/\/linkedin.com\/in\/thiagox86"],"url":"https:\/\/thiagorossi.com.br\/blog\/author\/thiagorossi\/"}]}},"_links":{"self":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=667"}],"version-history":[{"count":2,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/667\/revisions"}],"predecessor-version":[{"id":4359,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/667\/revisions\/4359"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media\/600"}],"wp:attachment":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}