{"id":1096,"date":"2024-12-11T08:31:15","date_gmt":"2024-12-11T07:31:15","guid":{"rendered":"https:\/\/piotrgabriel.pl\/wiki\/?p=1096"},"modified":"2024-12-11T08:31:15","modified_gmt":"2024-12-11T07:31:15","slug":"walidacja-formularzy-w-html-atrybuty-input-oraz-podstawy-wyrazen-regularnych","status":"publish","type":"post","link":"https:\/\/piotrgabriel.pl\/wiki\/walidacja-formularzy-w-html-atrybuty-input-oraz-podstawy-wyrazen-regularnych\/","title":{"rendered":"Walidacja formularzy w HTML &#8211; atrybuty input oraz podstawy wyra\u017ce\u0144 regularnych"},"content":{"rendered":"<p data-pm-slice=\"1 1 []\">Walidacja formularzy to kluczowy element tw\u00f3rc\u00f3w stron internetowych, pozwalaj\u0105cy upewni\u0107 si\u0119, \u017ce dane wprowadzane przez u\u017cytkownik\u00f3w s\u0105 poprawne. HTML5 dostarcza szeroki wachlarz narz\u0119dzi do walidacji, takich jak atrybuty pola input oraz mo\u017cliwo\u015b\u0107 wykorzystania wyra\u017ce\u0144 regularnych (ang. regular expressions, regex). W tym artykule om\u00f3wimy podstawy korzystania z tych narz\u0119dzi, wyja\u015bnimy ich dzia\u0142anie i zaprezentujemy praktyczne przyk\u0142ady.<\/p>\n<h2 data-pm-slice=\"1 1 []\"><strong>Atrybuty input w HTML5<\/strong><\/h2>\n<p>HTML5 wprowadzi\u0142o nowe typy i atrybuty dla element\u00f3w formularzy, kt\u00f3re upraszczaj\u0105 walidacj\u0119. Oto najwa\u017cniejsze z nich:<\/p>\n<h3>1. <strong>required<\/strong><\/h3>\n<p>Atrybut <code>required<\/code> oznacza, \u017ce pole jest obowi\u0105zkowe.<\/p>\n<pre><code>&lt;input type=\"text\" name=\"username\" required&gt;<\/code><\/pre>\n<p>Je\u015bli u\u017cytkownik nie wype\u0142ni tego pola, przegl\u0105darka wy\u015bwietli odpowiedni komunikat o b\u0142\u0119dzie.<\/p>\n<h3>2. <strong>minlength i maxlength<\/strong><\/h3>\n<p>Okre\u015blaj\u0105 minimaln\u0105 i maksymaln\u0105 liczb\u0119 znak\u00f3w w polu tekstowym.<\/p>\n<pre><code>&lt;input type=\"text\" name=\"password\" minlength=\"8\" maxlength=\"20\" required&gt;<\/code><\/pre>\n<p>Pole <code>password<\/code> musi zawiera\u0107 od 8 do 20 znak\u00f3w.<\/p>\n<h3>3. <strong>pattern<\/strong><\/h3>\n<p>Atrybut <code>pattern<\/code> pozwala okre\u015bli\u0107 regu\u0142\u0119 walidacji za pomoc\u0105 wyra\u017cenia regularnego.<\/p>\n<pre><code>&lt;input type=\"text\" name=\"postalCode\" pattern=\"\\d{2}-\\d{3}\" title=\"Wprowad\u017a kod pocztowy w formacie XX-XXX.\" required&gt;<\/code><\/pre>\n<p>Wyra\u017cenie regularne <code>\\d{2}-\\d{3}<\/code> wymaga wpisania kodu pocztowego w polskim formacie (np. 50-123).<\/p>\n<h3>4. <strong>type<\/strong><\/h3>\n<p>HTML5 wprowadza nowe typy pola input, kt\u00f3re automatycznie waliduj\u0105 dane:<\/p>\n<ul data-spread=\"false\">\n<li><code>email<\/code> \u2013 weryfikuje, czy wprowadzone dane s\u0105 adresem e-mail.<\/li>\n<li><code>url<\/code> \u2013 sprawdza poprawno\u015b\u0107 adresu URL.<\/li>\n<li><code>number<\/code> \u2013 wymaga wpisania liczby.<\/li>\n<li><code>tel<\/code> \u2013 waliduje numer telefonu.<\/li>\n<\/ul>\n<p>Przyk\u0142ad:<\/p>\n<pre><code>&lt;input type=\"email\" name=\"userEmail\" required&gt;<\/code><\/pre>\n<p>Je\u015bli wpisana warto\u015b\u0107 nie przypomina adresu e-mail (np. brak znaku <code>@<\/code>), przegl\u0105darka zg\u0142osi b\u0142\u0105d.<\/p>\n<h2><strong>Podstawy wyra\u017ce\u0144 regularnych<\/strong><\/h2>\n<p>Wyra\u017cenia regularne to pot\u0119\u017cne narz\u0119dzie do precyzyjnej walidacji danych. Poni\u017cej om\u00f3wimy podstawowe elementy ich sk\u0142adni:<\/p>\n<ol start=\"1\" data-spread=\"true\">\n<li><strong>Znaki specjalne<\/strong>\n<ul data-spread=\"false\">\n<li><code>\\d<\/code> \u2013 dowolna cyfra (0-9).<\/li>\n<li><code>\\w<\/code> \u2013 dowolny znak alfanumeryczny (litera, cyfra lub podkre\u015blenie).<\/li>\n<li><code>.<\/code> \u2013 dowolny pojedynczy znak.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Modyfikatory ilo\u015bci<\/strong>\n<ul data-spread=\"false\">\n<li><code>{n}<\/code> \u2013 dok\u0142adnie <code>n<\/code> wyst\u0105pie\u0144.<\/li>\n<li><code>{n,m}<\/code> \u2013 od <code>n<\/code> do <code>m<\/code> wyst\u0105pie\u0144.<\/li>\n<li><code>*<\/code> \u2013 zero lub wi\u0119cej wyst\u0105pie\u0144.<\/li>\n<li><code>+<\/code> \u2013 jedno lub wi\u0119cej wyst\u0105pie\u0144.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Kotwice<\/strong>\n<ul data-spread=\"false\">\n<li><code>^<\/code> \u2013 pocz\u0105tek \u0142a\u0144cucha.<\/li>\n<li><code>$<\/code> \u2013 koniec \u0142a\u0144cucha.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Znaki grupuj\u0105ce i alternatywa<\/strong>\n<ul data-spread=\"false\">\n<li><code>()<\/code> \u2013 grupowanie wyra\u017ce\u0144.<\/li>\n<li><code>|<\/code> \u2013 alternatywa (lub).<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3>Przyk\u0142ady wyra\u017ce\u0144 regularnych<\/h3>\n<ol start=\"1\" data-spread=\"false\">\n<li><strong>Kod pocztowy (XX-XXX)<\/strong><\/li>\n<\/ol>\n<pre><code>&lt;input type=\"text\" pattern=\"\\d{2}-\\d{3}\" title=\"Kod pocztowy w formacie XX-XXX\" required&gt;<\/code><\/pre>\n<p>Wyra\u017cenie <code>\\d{2}-\\d{3}<\/code> akceptuje dwa znaki cyfr, my\u015blnik i trzy cyfry.<\/p>\n<ol start=\"2\" data-spread=\"false\">\n<li><strong>PESEL (11 cyfr)<\/strong><\/li>\n<\/ol>\n<pre><code>&lt;input type=\"text\" pattern=\"\\d{11}\" title=\"PESEL musi zawiera\u0107 11 cyfr.\" required&gt;<\/code><\/pre>\n<p>Wyra\u017cenie <code>\\d{11}<\/code> wymaga dok\u0142adnie 11 cyfr.<\/p>\n<ol start=\"3\" data-spread=\"false\">\n<li><strong>Has\u0142o (min. 8 znak\u00f3w, w tym jedna wielka litera, ma\u0142a litera i cyfra)<\/strong><\/li>\n<\/ol>\n<pre><code>&lt;input type=\"password\" pattern=\"(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,}\" title=\"Has\u0142o musi mie\u0107 co najmniej 8 znak\u00f3w, w tym jedn\u0105 wielk\u0105 liter\u0119, jedn\u0105 ma\u0142\u0105 liter\u0119 i cyfr\u0119.\" required&gt;<\/code><\/pre>\n<div>\n<hr \/>\n<\/div>\n<h2><strong>Praktyczne przyk\u0142ady walidacji<\/strong><\/h2>\n<h3>Formularz z walidacj\u0105<\/h3>\n<p>Poni\u017cszy formularz \u0142\u0105czy om\u00f3wione elementy:<\/p>\n<pre><code>&lt;form&gt;\r\n  &lt;label for=\"email\"&gt;Adres e-mail:&lt;\/label&gt;\r\n  &lt;input type=\"email\" id=\"email\" name=\"email\" required&gt;\r\n\r\n  &lt;label for=\"postalCode\"&gt;Kod pocztowy:&lt;\/label&gt;\r\n  &lt;input type=\"text\" id=\"postalCode\" name=\"postalCode\" pattern=\"\\d{2}-\\d{3}\" title=\"Wprowad\u017a kod pocztowy w formacie XX-XXX.\" required&gt;\r\n\r\n  &lt;label for=\"pesel\"&gt;PESEL:&lt;\/label&gt;\r\n  &lt;input type=\"text\" id=\"pesel\" name=\"pesel\" pattern=\"\\d{11}\" title=\"PESEL musi zawiera\u0107 11 cyfr.\" required&gt;\r\n\r\n  &lt;label for=\"password\"&gt;Has\u0142o:&lt;\/label&gt;\r\n  &lt;input type=\"password\" id=\"password\" name=\"password\" pattern=\"(?=.*\\d)(?=.*[a-z])(?=.*[A-Z]).{8,}\" title=\"Has\u0142o musi mie\u0107 co najmniej 8 znak\u00f3w, w tym jedn\u0105 wielk\u0105 liter\u0119, ma\u0142\u0105 liter\u0119 i cyfr\u0119.\" required&gt;\r\n\r\n  &lt;button type=\"submit\"&gt;Wy\u015blij&lt;\/button&gt;\r\n&lt;\/form&gt;<\/code><\/pre>\n<h2><strong>Podsumowanie<\/strong><\/h2>\n<p>Walidacja formularzy w HTML5 za pomoc\u0105 atrybut\u00f3w input oraz wyra\u017ce\u0144 regularnych pozwala szybko i skutecznie sprawdza\u0107 poprawno\u015b\u0107 danych wprowadzanych przez u\u017cytkownik\u00f3w. Dzi\u0119ki wbudowanym mechanizmom, takim jak <code>required<\/code>, <code>pattern<\/code> czy <code>type<\/code>, tw\u00f3rcy stron mog\u0105 zapewni\u0107 u\u017cytkownikom intuicyjne i bezpieczne formularze. Wyra\u017cenia regularne dodaj\u0105 za\u015b elastyczno\u015b\u0107 i mo\u017cliwo\u015b\u0107 implementacji bardziej zaawansowanych regu\u0142. Opanowanie tych narz\u0119dzi to wa\u017cny krok na drodze do tworzenia profesjonalnych aplikacji internetowych.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Walidacja formularzy to kluczowy element tw\u00f3rc\u00f3w stron internetowych, pozwalaj\u0105cy upewni\u0107 si\u0119, \u017ce dane wprowadzane przez u\u017cytkownik\u00f3w s\u0105 poprawne. HTML5 dostarcza szeroki wachlarz narz\u0119dzi do walidacji, takich jak atrybuty pola input oraz mo\u017cliwo\u015b\u0107 wykorzystania wyra\u017ce\u0144 regularnych (ang. regular expressions, regex). W [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":137,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1096","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bez-kategorii"],"_links":{"self":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/1096","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/comments?post=1096"}],"version-history":[{"count":1,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/1096\/revisions"}],"predecessor-version":[{"id":1097,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/posts\/1096\/revisions\/1097"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media\/137"}],"wp:attachment":[{"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/media?parent=1096"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/categories?post=1096"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/piotrgabriel.pl\/wiki\/wp-json\/wp\/v2\/tags?post=1096"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}