{"id":146,"date":"2020-12-03T03:55:22","date_gmt":"2020-12-03T03:55:22","guid":{"rendered":"http:\/\/jplatz.com.br\/syntax\/?p=146"},"modified":"2020-12-10T23:06:37","modified_gmt":"2020-12-10T23:06:37","slug":"php-regex-para-validacao-de-senhas","status":"publish","type":"post","link":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/","title":{"rendered":"PHP Regex para Valida\u00e7\u00e3o de Senhas"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>function isValidPassword($password) {\n    $pattern = '\/^(?=.*\\d)(?=.*&#91;a-z])(?=.*&#91;A-Z])&#91;a-zA-Z\\d].\\S{8,36}$\/';\n\n    return preg_match($pattern, $password) ? true : false;\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Voc\u00ea \u00e9 bom em REGEX? Sabe o que \u00e9 ou para que serve? J\u00e1 precisou aplicar regras de valida\u00e7\u00e3o de senhas e n\u00e3o usou REGEX? Ent\u00e3o voc\u00ea pode ler este artigo para come\u00e7ar a explorar mais sobre este recurso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primeiramente vou deixar claro que o objetivo do artigo n\u00e3o \u00e9 ensinar REGEX amplamente, ao inv\u00e9s disso vamos aplicar o recurso num problema pr\u00e1tico explicando o processo de valida\u00e7\u00e3o de senhas segundo um cen\u00e1rio de regras, aqui vai&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regra 1 &#8211; A senha deve ter no m\u00ednimo 8 e no m\u00e1ximo 36 caracteres.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regra 2 &#8211; A senha deve ser composta de ao menos 1 n\u00famero, ao menos uma letra mai\u00fascula, e ao menos uma letra min\u00fascula.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regra 3 &#8211; A senha deve ser composta de apenas letras e n\u00fameros e n\u00e3o deve possuir nenhum tipo de caracteres especiais.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">No PHP para verificarmos um texto com REGEX podemos usar o recurso preg_match. Como o nome j\u00e1 diz o comando vai verificar o conte\u00fado do texto segundo uma combina\u00e7\u00e3o de m\u00e1scaras para encontrar a combina\u00e7\u00e3o desejada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Confuso? Ent\u00e3o vamos a parte pr\u00e1tica, observe primeiramente a m\u00e1scara postada com esta sintaxe.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'\/^(?=.*\\d)(?=.*&#91;a-z])(?=.*&#91;A-Z])&#91;a-zA-Z\\d].\\S{8,36}$\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para entender como a regra funciona temos que desmont\u00e1-la e explicar em partes. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Entenda que com REGEX voc\u00ea monta uma m\u00e1scara aos poucos, assim tente n\u00e3o pensar em aplicar a regra 1 primeiro, depois a regra 2 e no final a regra 3. Geralmente temos que come\u00e7ar aplicar o que \u00e9 mais f\u00e1cil, mais simples e ir aumentando a complexidade gradativamente. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'\/(?=.*\\d)\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esta m\u00e1scara garante que a senha contenha ao menos 1 n\u00famero, o que \u00e9 parte da exig\u00eancia da regra 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pense nesta m\u00e1scara como sendo uma varredura completa do texto onde ? \u00e9 cada um dos caracteres da senha podendo ser igual a qualquer coisa (.*) desde que seja num\u00e9rico (\\d). <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'\/(?=.*\\d)(?=.*&#91;a-z])\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esta segunda parte garante que a senha contenha ao menos 1 letra min\u00fascula, que tamb\u00e9m \u00e9 parte da exig\u00eancia da regra 2.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pense que cada m\u00e1scara entre par\u00eanteses \u00e9 uma varredura individual em que o resultado da varredura deve ser TRUE quando fizer o match desejado.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'\/(?=.*\\d)(?=.*&#91;a-z])(?=.*&#91;A-Z])\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O terceiro par\u00eanteses cont\u00e9m a mesma valida\u00e7\u00e3o que o segundo, s\u00f3 que como o REGEX \u00e9 case sensitive por padr\u00e3o temos que validar com os dois formatos separadamente, letras min\u00fasculas e letras mai\u00fasculas separamente.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'\/(?=.*\\d)(?=.*&#91;a-z])(?=.*&#91;A-Z])&#91;a-zA-Z\\d]\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A pr\u00f3xima m\u00e1scara adicionada quase garante que todos os caracteres do texto sejam letras e n\u00fameros apenas. Sim, eu disse quase, mas ainda temos que garantir que a combina\u00e7\u00e3o desejada seja validada do in\u00edcio ao fim do texto, caso contr\u00e1rio as extremidades (bordas) do texto poder\u00e3o conter caracteres indesejadados.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'\/^(?=.*\\d)(?=.*&#91;a-z])(?=.*&#91;A-Z])&#91;a-zA-Z\\d]$\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Agora sim, o acento circunflexo \u02c6 garante que a valida\u00e7\u00e3o vai ser realizada a partir do primeiro caracter da senha e o d\u00f3lar $ garante que a combina\u00e7\u00e3o desejada ser\u00e1 feita at\u00e9 o \u00faltimo caracter da senha.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regra 3 conclu\u00edda? Parece que sim, s\u00f3 que n\u00e3o&#8230; deixa pa l\u00e1, resolvemos depois.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'\/^(?=.*\\d)(?=.*&#91;a-z])(?=.*&#91;A-Z])&#91;a-zA-Z\\d]{8,36}$\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Olha que f\u00e1cil, para determinar as quantidades m\u00ednimas e m\u00e1ximas de caracteres basta inserir estes limitadores entre chaves {} sendo o primeiro n\u00famero a quantidade m\u00ednima de caracteres requerida e o segundo n\u00famero a quantidade m\u00e1xima requerida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Parece que a regra est\u00e1 completa, n\u00e3o parece? Ent\u00e3o onde est\u00e1 o BUG?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Seguinte, espa\u00e7os em brancos passam batidos na valida\u00e7\u00e3o de letras e n\u00fameros, justamente por que espa\u00e7o em branco n\u00e3o \u00e9 nada. N\u00e3o \u00e9 letra, n\u00e3o \u00e9 n\u00famero, n\u00e3o \u00e9 caracter especial, nada. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>'\/^(?=.*\\d)(?=.*&#91;a-z])(?=.*&#91;A-Z])&#91;a-zA-Z\\d].\\S{8,36}$\/'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Pronto, com o .\\S garantimos que espa\u00e7os em brancos n\u00e3o estejam presentes na senha. Maravilha!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mas voc\u00ea ainda pode estar se perguntando sobre as barras \/ no \u00ednicio e fim da m\u00e1scara e tamb\u00e9m o recobrimento com as aspas, certo?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">O REGEX requer o recobrimento com delimitadores, no meu caso escolhi o mais trivial que s\u00e3o barras normais SLASHES. Mas voc\u00ea poderia utilizar outros caracteres a seu crit\u00e9rio como PIPE | ou NUMBER #. O interessante \u00e9 que voc\u00ea use como delimitador algum caracter que voc\u00ea n\u00e3o v\u00e1 utilizar na composi\u00e7\u00e3o da m\u00e1scara.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por fim, uma m\u00e1scara \u00e9 uma string, assim temos que recobri-la com aspas, que podem ser simples &#8221; ou duplas &#8220;&#8221;, tanto faz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, gostou do REGEX? Isso \u00e9 um mundo a parte, pegar profici\u00eancia neste campo requer muito empenho mas vale a pena. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Eu nunca encontrei um treinamento que te ensina como pensar em REGEX, mas acho que isso \u00e9 algo que somente se adquire com tempo e experi\u00eancia. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ent\u00e3o, boa sorte!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Voc\u00ea \u00e9 bom em REGEX? Sabe o que \u00e9 ou para que serve? J\u00e1 precisou aplicar regras de valida\u00e7\u00e3o de senhas e n\u00e3o usou REGEX? Ent\u00e3o voc\u00ea pode ler este artigo para come\u00e7ar a explorar mais sobre este recurso. Primeiramente vou deixar claro que o objetivo do artigo n\u00e3o \u00e9 ensinar REGEX amplamente, ao inv\u00e9s [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,2,3],"tags":[68,67,66],"class_list":["post-146","post","type-post","status-publish","format-standard","hentry","category-backend","category-coding","category-php","tag-match","tag-preg_match","tag-regex"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"marcelino.janing\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Syntax | Comes first for Web Devs\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"PHP Regex para Valida\u00e7\u00e3o de Senhas | Syntax\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-12-03T03:55:22+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-12-10T23:06:37+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"PHP Regex para Valida\u00e7\u00e3o de Senhas | Syntax\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/2020\\\/12\\\/03\\\/php-regex-para-validacao-de-senhas\\\/#article\",\"name\":\"PHP Regex para Valida\\u00e7\\u00e3o de Senhas | Syntax\",\"headline\":\"PHP Regex para Valida\\u00e7\\u00e3o de Senhas\",\"author\":{\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/author\\\/marcelino-janing\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/#organization\"},\"datePublished\":\"2020-12-03T03:55:22+00:00\",\"dateModified\":\"2020-12-10T23:06:37+00:00\",\"inLanguage\":\"pt-PT\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/2020\\\/12\\\/03\\\/php-regex-para-validacao-de-senhas\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/2020\\\/12\\\/03\\\/php-regex-para-validacao-de-senhas\\\/#webpage\"},\"articleSection\":\"Backend, Coding, PHP, match, preg_match, regex, mjaning\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/2020\\\/12\\\/03\\\/php-regex-para-validacao-de-senhas\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/#listItem\",\"name\":\"Coding\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/#listItem\",\"position\":2,\"name\":\"Coding\",\"item\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/backend\\\/#listItem\",\"name\":\"Backend\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/backend\\\/#listItem\",\"position\":3,\"name\":\"Backend\",\"item\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/backend\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/backend\\\/php\\\/#listItem\",\"name\":\"PHP\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/#listItem\",\"name\":\"Coding\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/backend\\\/php\\\/#listItem\",\"position\":4,\"name\":\"PHP\",\"item\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/backend\\\/php\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/2020\\\/12\\\/03\\\/php-regex-para-validacao-de-senhas\\\/#listItem\",\"name\":\"PHP Regex para Valida\\u00e7\\u00e3o de Senhas\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/backend\\\/#listItem\",\"name\":\"Backend\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/2020\\\/12\\\/03\\\/php-regex-para-validacao-de-senhas\\\/#listItem\",\"position\":5,\"name\":\"PHP Regex para Valida\\u00e7\\u00e3o de Senhas\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/category\\\/coding\\\/backend\\\/php\\\/#listItem\",\"name\":\"PHP\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/#organization\",\"name\":\"Syntax\",\"description\":\"Comes first for Web Devs\",\"url\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/author\\\/marcelino-janing\\\/#author\",\"url\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/author\\\/marcelino-janing\\\/\",\"name\":\"marcelino.janing\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/2020\\\/12\\\/03\\\/php-regex-para-validacao-de-senhas\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/c5dd32776da0a84839d569b69e3b7cf4532b641a1310d9921a14ca10469679b7?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"marcelino.janing\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/2020\\\/12\\\/03\\\/php-regex-para-validacao-de-senhas\\\/#webpage\",\"url\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/2020\\\/12\\\/03\\\/php-regex-para-validacao-de-senhas\\\/\",\"name\":\"PHP Regex para Valida\\u00e7\\u00e3o de Senhas | Syntax\",\"inLanguage\":\"pt-PT\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/2020\\\/12\\\/03\\\/php-regex-para-validacao-de-senhas\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/author\\\/marcelino-janing\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/author\\\/marcelino-janing\\\/#author\"},\"datePublished\":\"2020-12-03T03:55:22+00:00\",\"dateModified\":\"2020-12-10T23:06:37+00:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/#website\",\"url\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/\",\"name\":\"Syntax\",\"description\":\"Comes first for Web Devs\",\"inLanguage\":\"pt-PT\",\"publisher\":{\"@id\":\"https:\\\/\\\/jplatz.com.br\\\/syntax\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"PHP Regex para Valida\u00e7\u00e3o de Senhas | Syntax","description":"","canonical_url":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/#article","name":"PHP Regex para Valida\u00e7\u00e3o de Senhas | Syntax","headline":"PHP Regex para Valida\u00e7\u00e3o de Senhas","author":{"@id":"https:\/\/jplatz.com.br\/syntax\/author\/marcelino-janing\/#author"},"publisher":{"@id":"https:\/\/jplatz.com.br\/syntax\/#organization"},"datePublished":"2020-12-03T03:55:22+00:00","dateModified":"2020-12-10T23:06:37+00:00","inLanguage":"pt-PT","mainEntityOfPage":{"@id":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/#webpage"},"isPartOf":{"@id":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/#webpage"},"articleSection":"Backend, Coding, PHP, match, preg_match, regex, mjaning"},{"@type":"BreadcrumbList","@id":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax#listItem","position":1,"name":"Home","item":"https:\/\/jplatz.com.br\/syntax","nextItem":{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/#listItem","name":"Coding"}},{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/#listItem","position":2,"name":"Coding","item":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/","nextItem":{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/#listItem","name":"Backend"},"previousItem":{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/#listItem","position":3,"name":"Backend","item":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/","nextItem":{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/php\/#listItem","name":"PHP"},"previousItem":{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/#listItem","name":"Coding"}},{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/php\/#listItem","position":4,"name":"PHP","item":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/php\/","nextItem":{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/#listItem","name":"PHP Regex para Valida\u00e7\u00e3o de Senhas"},"previousItem":{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/#listItem","name":"Backend"}},{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/#listItem","position":5,"name":"PHP Regex para Valida\u00e7\u00e3o de Senhas","previousItem":{"@type":"ListItem","@id":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/php\/#listItem","name":"PHP"}}]},{"@type":"Organization","@id":"https:\/\/jplatz.com.br\/syntax\/#organization","name":"Syntax","description":"Comes first for Web Devs","url":"https:\/\/jplatz.com.br\/syntax\/"},{"@type":"Person","@id":"https:\/\/jplatz.com.br\/syntax\/author\/marcelino-janing\/#author","url":"https:\/\/jplatz.com.br\/syntax\/author\/marcelino-janing\/","name":"marcelino.janing","image":{"@type":"ImageObject","@id":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/c5dd32776da0a84839d569b69e3b7cf4532b641a1310d9921a14ca10469679b7?s=96&d=mm&r=g","width":96,"height":96,"caption":"marcelino.janing"}},{"@type":"WebPage","@id":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/#webpage","url":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/","name":"PHP Regex para Valida\u00e7\u00e3o de Senhas | Syntax","inLanguage":"pt-PT","isPartOf":{"@id":"https:\/\/jplatz.com.br\/syntax\/#website"},"breadcrumb":{"@id":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/#breadcrumblist"},"author":{"@id":"https:\/\/jplatz.com.br\/syntax\/author\/marcelino-janing\/#author"},"creator":{"@id":"https:\/\/jplatz.com.br\/syntax\/author\/marcelino-janing\/#author"},"datePublished":"2020-12-03T03:55:22+00:00","dateModified":"2020-12-10T23:06:37+00:00"},{"@type":"WebSite","@id":"https:\/\/jplatz.com.br\/syntax\/#website","url":"https:\/\/jplatz.com.br\/syntax\/","name":"Syntax","description":"Comes first for Web Devs","inLanguage":"pt-PT","publisher":{"@id":"https:\/\/jplatz.com.br\/syntax\/#organization"}}]},"og:locale":"pt_PT","og:site_name":"Syntax | Comes first for Web Devs","og:type":"article","og:title":"PHP Regex para Valida\u00e7\u00e3o de Senhas | Syntax","og:url":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/","article:published_time":"2020-12-03T03:55:22+00:00","article:modified_time":"2020-12-10T23:06:37+00:00","twitter:card":"summary","twitter:title":"PHP Regex para Valida\u00e7\u00e3o de Senhas | Syntax"},"aioseo_meta_data":{"post_id":"146","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[],"defaultGraph":"","defaultPostTypeGraph":""},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-21 04:27:00","updated":"2025-06-04 06:33:19","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jplatz.com.br\/syntax\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jplatz.com.br\/syntax\/category\/coding\/\" title=\"Coding\">Coding<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/\" title=\"Backend\">Backend<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/php\/\" title=\"PHP\">PHP<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tPHP Regex para Valida\u00e7\u00e3o de Senhas\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/jplatz.com.br\/syntax"},{"label":"Coding","link":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/"},{"label":"Backend","link":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/"},{"label":"PHP","link":"https:\/\/jplatz.com.br\/syntax\/category\/coding\/backend\/php\/"},{"label":"PHP Regex para Valida\u00e7\u00e3o de Senhas","link":"https:\/\/jplatz.com.br\/syntax\/2020\/12\/03\/php-regex-para-validacao-de-senhas\/"}],"_links":{"self":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/comments?post=146"}],"version-history":[{"count":3,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/146\/revisions"}],"predecessor-version":[{"id":149,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/146\/revisions\/149"}],"wp:attachment":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/media?parent=146"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/categories?post=146"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/tags?post=146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}