{"id":325984,"date":"2021-07-05T15:00:24","date_gmt":"2021-07-05T15:00:24","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=325984"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=325984","title":{"rendered":"JavaScript: \u0438\u0437\u0443\u0447\u0430\u0435\u043c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0430 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0435"},"content":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yk\/di\/iz\/ykdiizs6kxlkfcotid7rjjju4ri.jpeg\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u0434\u0430\u043b\u0435\u0435 \u0442\u0430\u043a\u0436\u0435 \u2014 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0430) \u2014 \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0438\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d (pattern), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439.<\/p>\n<p>  <\/p>\n<p>\u0426\u0435\u043b\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u043b\u0438\u0431\u043e \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438, \u043b\u0438\u0431\u043e \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c? \u041c\u044b \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043e\u043a \u0438\u0437 <a href=\"https:\/\/github.com\/validatorjs\/validator.js\/\"><code>validator.js<\/code><\/a> (\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439) \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043c \u0438\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043e\u043a \u0438 \u043e\u0434\u0438\u043d \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c.<\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n<p><a name=\"habracut\"><\/a>  <\/p>\n<p><a href=\"https:\/\/developer.mozilla.org\/ru\/docs\/Web\/JavaScript\/Reference\/Global_Objects\/RegExp\">\u0417\u0434\u0435\u0441\u044c<\/a> \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u043e\u0431\u0449\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u0445, \u0430 <a href=\"https:\/\/learn.javascript.ru\/regular-expressions\">\u0437\u0434\u0435\u0441\u044c<\/a> \u2014 \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0435 \u0441\u0432\u0435\u0434\u0435\u043d\u0438\u044f. \u0420\u0435\u043a\u043e\u043c\u0435\u043d\u0434\u0443\u044e \u043e\u0437\u043d\u0430\u043a\u043e\u043c\u0438\u0442\u044c\u0441\u044f \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c\u0438 \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430\u043c\u0438 \u2014 \u0442\u0430\u043a \u0432\u0430\u043c \u0431\u0443\u0434\u0435\u0442 \u043b\u0435\u0433\u0447\u0435 \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0442\u044c \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e.<\/p>\n<p>  <\/p>\n<p>\u0415\u0449\u0435 \u043f\u0430\u0440\u043e\u0447\u043a\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0441\u0441\u044b\u043b\u043e\u043a:<\/p>\n<p>  <\/p>\n<ul>\n<li>\n<p><a href=\"https:\/\/regex101.com\/\">\u0418\u043d\u0442\u0435\u0440\u0430\u043a\u0442\u0438\u0432\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440 (\u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u0430) \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439<\/a>. \u041e\u0434\u043d\u043e\u0439 \u0438\u0437 \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e\u0441\u0442\u0435\u0439 \u0434\u0430\u043d\u043d\u043e\u0439 \u043f\u0435\u0441\u043e\u0447\u043d\u0438\u0446\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438 \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c\u043e\u0435 \u043e\u0431\u044a\u044f\u0441\u043d\u0435\u043d\u0438\u0435 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439, \u0447\u0442\u043e \u0431\u044b\u0432\u0430\u0435\u0442 \u043e\u0447\u0435\u043d\u044c \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u043c<\/p>\n<p>  <\/li>\n<li>\n<p><a href=\"https:\/\/github.com\/VerbalExpressions\/JSVerbalExpressions\">\u0411\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043e\u043a \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0442\u0438\u0432\u043d\u043e\u0433\u043e \u0441\u0438\u043d\u0442\u0430\u043a\u0441\u0438\u0441\u0430<\/a>, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ \u0412\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u044f `URL` \u0441 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c `http(s)` const regexp = VerEx() \/\/ \u043d\u0430\u0447\u0430\u043b\u043e \u0441\u0442\u0440\u043e\u043a\u0438 .startOfLine() \/\/ \u0437\u0430\u0442\u0435\u043c `http` .then('http') \/\/ \u0437\u0430\u0442\u0435\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, `s` .maybe('s') \/\/ \u0437\u0430\u0442\u0435\u043c `:\/\/` .then(':\/\/') \/\/ \u0437\u0430\u0442\u0435\u043c, \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e, `www.` .maybe('www.') \/\/ \u0437\u0430\u0442\u0435\u043c \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u043a\u0440\u043e\u043c\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u0430 .anythingBut(' ') \/\/ \u043a\u043e\u043d\u0435\u0446 \u0441\u0442\u0440\u043e\u043a\u0438 .endOfLine()  const isURL = (str) =&gt; regexp.test(str)  console.log(isURL('https:\/\/www.google.com')) \/\/ true<\/code><\/pre>\n<p>  <\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u043c\u044f\u0442\u044c \u043c\u043e\u0437\u0433\u0438, \u043d\u0430\u0447\u043d\u0435\u043c \u0441 \u0434\u0432\u0443\u0445 &quot;\u0432\u0430\u043b\u0438\u0434\u0430\u0442\u043e\u0440\u043e\u0432&quot;, \u0432 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043d\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0442\u0441\u044f.<\/p>\n<p>  <\/p>\n<p><em>\u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u0443\u0441\u0442\u043e\u0439?<\/em><\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const isEmpty = (str) =&gt; str.trim().length === 0  console.log(isEmpty('not empty')) \/\/ false console.log(isEmpty('   ')) \/\/ true<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u0435\u0442\u043e\u0434 <code>trim()<\/code> \u0443\u0434\u0430\u043b\u044f\u0435\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u044b \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0438 \u043a\u043e\u043d\u0446\u0435 \u0441\u0442\u0440\u043e\u043a\u0438. \u0421\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>length<\/code> \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0430. \u0415\u0441\u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u0441\u043e\u0434\u0435\u0440\u0436\u0438\u0442 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0437\u043d\u0430\u0447\u0438\u0442, \u0435\u0435 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u043e <code>length<\/code> \u0438\u043c\u0435\u0435\u0442 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>0<\/code>. \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>str.length === 0<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>true<\/code>. \u0412 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f <code>false<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const isEmpty = (str) =&gt; !str.trim().length \/\/ `0` - \u043b\u043e\u0436\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, `1` \u0438 \u0431\u043e\u043b\u044c\u0448\u0435 - \u0438\u0441\u0442\u0438\u043d\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435, \/\/ `!` - \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u041d\u0415, \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u0442 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f \u0432 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438 \u043c\u0435\u043d\u044f\u0435\u0442 \u0435\u0433\u043e \u043d\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u043e\u0435 \/\/ \u043f\u043e\u043b\u0443\u0447\u0430\u0435\u0442\u0441\u044f `!false`, \u0438\u043b\u0438 `true`  \/\/ \u0438\u043b\u0438 \u0442\u0430\u043a const _isEmpty = (str) =&gt; str.trim() === ''<\/code><\/pre>\n<p>  <\/p>\n<p><em>\u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 &quot;\u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c&quot;?<\/em><\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const isBoolean = (str) =&gt; ['true', 'false', '1', '0'].indexOf(str) &gt;= 0  console.log(isBoolean('true')) \/\/ true console.log(isBoolean(false)) \/\/ false (\u0441\u043c. \u043d\u0438\u0436\u0435)<\/code><\/pre>\n<p>  <\/p>\n<p>\u041c\u0435\u0442\u043e\u0434 <code>indexOf()<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0438\u043d\u0434\u0435\u043a\u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0438\u043b\u0438 <code>-1<\/code> \u043f\u0440\u0438 \u043e\u0442\u0441\u0443\u0442\u0441\u0442\u0432\u0438\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435. \u0415\u0441\u043b\u0438 \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0435\u0441\u0442\u044c, \u0435\u0433\u043e \u0438\u043d\u0434\u0435\u043a\u0441 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0432\u043d\u044b\u043c <code>0<\/code> \u0438\u043b\u0438 \u0431\u043e\u043b\u044c\u0448\u0435 (\u0432 \u043f\u0440\u0435\u0434\u0435\u043b\u0430\u0445 \u0434\u043b\u0438\u043d\u044b \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u2014 1). \u0412 \u044d\u0442\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 <code>arr.indexOf(str) &gt;= 0<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>true<\/code>. \u0418\u043d\u0430\u0447\u0435, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f <code>false<\/code>.<\/p>\n<p>  <\/p>\n<p><em>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/em>: \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c\u0438 \u0441\u0447\u0438\u0442\u0430\u044e\u0442\u0441\u044f \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f <code>true<\/code> \u0438 <code>false<\/code>, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 <code>1<\/code> (\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0435\u0435 \u0438\u0441\u0442\u0438\u043d\u0443) \u0438 <code>0<\/code> (\u043e\u0431\u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0435\u0435 \u043b\u043e\u0436\u044c). \u0422\u0430\u043a\u0436\u0435 <em>\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/em>, \u0447\u0442\u043e \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0442\u043e\u043b\u044c\u043a\u043e \u0441\u0442\u0440\u043e\u043a\u0443 (\u043a\u0430\u043a \u0438 \u0444\u0443\u043d\u043a\u0446\u0438\u0438, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0431\u0443\u0434\u0443\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c), \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0442\u043e\u0440\u043e\u0439 \u0432\u044b\u0437\u043e\u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u0438 <code>isBoolean()<\/code> \u0441 \u043b\u043e\u0433\u0438\u0447\u0435\u0441\u043a\u0438\u043c \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <code>false<\/code> \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>false<\/code>.<\/p>\n<p>  <\/p>\n<p>\u0414\u0430\u043d\u043d\u0443\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u0435\u0440\u0435\u043f\u0438\u0441\u0430\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const bools = ['true', 'false', '1', '0']  const isBoolean = (str) =&gt; bools.indexOf(str) !== -1  \/\/ \u0438\u043b\u0438 \u0442\u0430\u043a const _isBoolean = (str) =&gt; bools.indexOf(str) &gt; -1<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u043c\u044f\u043b\u0438\u0441\u044c? \u041e\u0442\u043b\u0438\u0447\u043d\u043e. \u041f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u043c \u043a \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0430\u043c.<\/p>\n<p>  <\/p>\n<p><strong>\u0421\u043e\u0441\u0442\u043e\u0438\u0442 \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0431\u0443\u043a\u0432?<\/strong><\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ \u0434\u043b\u044f \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b const isAlpha = \/^[A-Z]+$\/i.test(str)  \/\/ \u0434\u043b\u044f \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u044b const _isAlpha = \/^[\u0410-\u042f\u0401]+$\/i.test(str)  \/\/ \u0434\u043b\u044f \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b \u0438 \u043a\u0440\u0438\u043b\u043b\u0438\u0446\u044b const __isAlpha = \/^[A-Z\u0410-\u042f\u0401]+$\/i.test(str)<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>^<\/code> \u0438 <code>$<\/code> \u2014 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043d\u0430\u0447\u0430\u043b\u0430 \u0438 \u043a\u043e\u043d\u0446\u0430 \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e (\u0433\u0440\u0430\u043d\u0438\u0446\u044b)<\/li>\n<li><code>[]<\/code> \u2014 \u043d\u0430\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043f\u0435\u0440\u0435\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0435 (\u0441\u0438\u043c\u0432\u043e\u043b \u0441\u0442\u0440\u043e\u043a\u0438 \u0434\u043e\u043b\u0436\u0435\u043d \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432)<\/li>\n<li><code>A-Z<\/code> \u0438\u043b\u0438 <code>\u0410-\u042f\u0401<\/code> \u2014 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0431\u0443\u043a\u0432 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <code>\u0410-\u042f\u0401<\/code> \u2014 \u044d\u0442\u043e \u0432\u0441\u0435 \u0431\u0443\u043a\u0432\u044b \u043a\u0438\u0440\u0440\u0438\u043b\u0438\u0446\u044b \u043e\u0442 <code>\u0410<\/code> \u0434\u043e <code>\u042f<\/code> + \u0431\u0443\u043a\u0432\u0430 <code>\u0401<\/code>, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0441\u0442\u043e\u0438\u0442 \u043e\u0441\u043e\u0431\u043d\u044f\u043a\u043e\u043c)<\/li>\n<\/ul>\n<p>  <\/p>\n<p><em>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/em>: <code>A-Z<\/code> \u2014 \u044d\u0442\u043e \u043d\u0435 \u0442\u043e\u0436\u0435 \u0441\u0430\u043c\u043e\u0435, \u0447\u0442\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441 <code>\\w<\/code>. <code>\\w<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043b\u044e\u0431\u0430\u044f \u0431\u0443\u043a\u0432\u0430 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b \u0418\u041b\u0418 \u043b\u044e\u0431\u0430\u044f \u0446\u0438\u0444\u0440\u0430 \u0418\u041b\u0418 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<ul>\n<li><code>+<\/code> \u2014 \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u0442.\u0435. \u0441\u0438\u043c\u0432\u043e\u043b, \u043d\u0430\u0445\u043e\u0434\u044f\u0449\u0438\u0439\u0441\u044f \u043f\u0435\u0440\u0435\u0434 <code>+<\/code> (\u043a\u0432\u0430\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440)<\/li>\n<li><code>i<\/code> \u2014 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u043e\u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u044b\u0439 \u043f\u043e\u0438\u0441\u043a, \u0442.\u0435. \u043f\u043e\u0438\u0441\u043a \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0442\u043e\u0433\u043e, \u0438\u0437 \u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u0438\u043b\u0438 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0438\u0445 \u0431\u0443\u043a\u0432 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0441\u0442\u0440\u043e\u043a\u0430 (\u0444\u043b\u0430\u0433)<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0427\u0438\u0442\u0430\u0435\u043c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0443: <em>\u0441\u0442\u0440\u043e\u043a\u0430 \u0414\u041e\u041b\u0416\u041d\u0410 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 (\u043e\u0434\u043d\u043e\u0439 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435) \u0431\u0443\u043a\u0432\u044b, \u043d\u0435\u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e \u043e\u0442 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430<\/em>.<\/p>\n<p>  <\/p>\n<p><strong>\u0421\u043e\u0441\u0442\u043e\u0438\u0442 \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0431\u0443\u043a\u0432 \u0438\/\u0438\u043b\u0438 \u0446\u0435\u043b\u044b\u0445 \u0447\u0438\u0441\u0435\u043b?<\/strong><\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ \u0434\u043b\u044f \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b const isAlphaNumeric = (str) =&gt; \/^[0-9A-Z]+$\/i.test(str)  \/\/ \u0434\u043b\u044f \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u044b const _isAlphaNumeric = (str) =&gt; \/^[0-9\u0410-\u042f\u0401]+$\/i.test(str)  \/\/ \u0434\u043b\u044f \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b \u0438 \u043a\u0438\u0440\u0438\u043b\u043b\u0438\u0446\u044b const __isAlphaNumeric = (str) =&gt; \/^[0-9A-Z\u0410-\u042f\u0401]+$\/i.test(str)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u043e\u0440: \u0442\u0430\u043a\u0438\u0435 \u0436\u0435 \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b\u044b, \u0447\u0442\u043e \u0438 \u0432 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 +<\/p>\n<p>  <\/p>\n<ul>\n<li><code>0-9<\/code> \u2014 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u0446\u0438\u0444\u0440 \u043e\u0442 <code>0<\/code> \u0434\u043e <code>9<\/code>; \u0434\u0430\u043d\u043d\u044b\u0439 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043c\u043e\u0436\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u043c \u043a\u043b\u0430\u0441\u0441\u043e\u043c <code>\\d<\/code>, \u043e\u0437\u043d\u0430\u0447\u0430\u044e\u0449\u0438\u043c \u043b\u044e\u0431\u043e\u0435 \u0447\u0438\u0441\u043b\u043e, \u0434\u043b\u044f \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u0441\u044f <code>\/^[\\dA-Z]+$\/i<\/code><\/li>\n<\/ul>\n<p>  <\/p>\n<p><em>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/em>: \u0437\u0434\u0435\u0441\u044c \u043c\u044b \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c <code>\\w<\/code> \u0438\u0437-\u0437\u0430 \u043d\u0438\u0436\u043d\u0435\u0433\u043e \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u044f. \u0412\u043f\u0440\u043e\u0447\u0435\u043c, \u043c\u044b \u043c\u043e\u0436\u0435\u043c \u0438\u0441\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0435\u0433\u043e \u0438\u0437 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u043d\u0430\u043f\u0438\u0441\u0430\u0432 \u0447\u0442\u043e-\u0442\u043e \u0432\u0440\u043e\u0434\u0435 <code>\/^[^\\W_]$\/i<\/code>, \u0433\u0434\u0435 <code>[^]<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u043a\u0440\u043e\u043c\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445 \u0432 \u043d\u0430\u0431\u043e\u0440\u0435 (\u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f <code>_<\/code>), <code>\\W<\/code> \u2014 \u041d\u0415 \u0431\u0443\u043a\u0432\u0430 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b, \u041d\u0415 \u0447\u0438\u0441\u043b\u043e \u0438 \u041d\u0415 \u043d\u0438\u0436\u043d\u0435\u0435 \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435. \u0422\u0430\u043a\u0438\u043c \u043e\u0431\u0440\u0430\u0437\u043e\u043c, <code>[^\\W_]<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u041d\u0415 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0438\u0436\u043d\u0438\u043c \u043f\u043e\u0434\u0447\u0435\u0440\u043a\u0438\u0432\u0430\u043d\u0438\u0435\u043c, \u0430 \u0442\u0430\u043a\u0436\u0435 \u043d\u0435 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u0431\u0443\u043a\u0432\u0430\u043c \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b \u0418\u041b\u0418 \u0446\u0438\u0444\u0440\u0430\u043c. \u0418\u043b\u0438 \u0432 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u0435 \u043d\u0430 \u0447\u0435\u043b\u043e\u0432\u0435\u0447\u0435\u0441\u043a\u0438\u0439 \u044f\u0437\u044b\u043a \u2014 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0431\u0443\u043a\u0432\u043e\u0439 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b \u0438\u043b\u0438 \u0447\u0438\u0441\u043b\u043e\u043c.<\/p>\n<p>  <\/p>\n<p>\u0427\u0438\u0442\u0430\u0435\u043c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0443: <em>\u0441\u0442\u0440\u043e\u043a\u0430 \u0414\u041e\u041b\u0416\u041d\u0410 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0431\u0443\u043a\u0432\u044b \u0418\/\u0418\u041b\u0418 (\u0430\u0440\u0430\u0431\u0441\u043a\u043e\u0433\u043e \u2014 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f) \u0447\u0438\u0441\u043b\u0430, \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430<\/em><\/p>\n<p>  <\/p>\n<p><strong>\u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u043c \u0438\u043d\u0434\u0435\u043a\u0441\u043e\u043c?<\/strong><\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const isPostalCode = (str) =&gt; \/^\\d{6}$\/.test(str)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u043e\u0440:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>{6}<\/code> \u2014 \u0442\u043e\u0447\u043d\u043e <code>6<\/code> \u0432\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u0439 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0435\u0433\u043e \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0442.\u0435. \u0441\u0438\u043c\u0432\u043e\u043b \u043f\u0435\u0440\u0435\u0434 <code>{<\/code> \u0434\u043e\u043b\u0436\u0435\u043d \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u0442\u044c\u0441\u044f <code>6<\/code> \u0440\u0430\u0437, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043f\u043e\u0447\u0442\u043e\u0432\u044b\u0439 \u0438\u043d\u0434\u0435\u043a\u0441 (\u0434\u043b\u044f \u0420\u043e\u0441\u0441\u0438\u0438) \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 <code>6<\/code> \u0446\u0438\u0444\u0440 (\u043a\u0432\u0430\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440)<\/li>\n<\/ul>\n<p>  <\/p>\n<p><em>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/em>: \u0432 \u0431\u043e\u043b\u044c\u0448\u0438\u043d\u0441\u0442\u0432\u0435 \u0441\u043b\u0443\u0447\u0430\u0435\u0432 \u043f\u0440\u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f, \u0447\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0430 \u043f\u0440\u043e\u0448\u043b\u0430 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0443\u044e \u043e\u0447\u0438\u0441\u0442\u043a\u0443 \u043e\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432 \u0438 \u0434\u0440\u0443\u0433\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0432 \u043d\u0435\u0439 \u0431\u044b\u0442\u044c \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u043e (\u0441\u043c. \u043d\u0438\u0436\u0435).<\/p>\n<p>  <\/p>\n<p>\u0427\u0438\u0442\u0430\u0435\u043c: <em>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0414\u041e\u041b\u0416\u041d\u041e \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c (\u0442\u043e\u0447\u043d\u043e \u2014 \u0432 \u0434\u0430\u043b\u044c\u043d\u0435\u0439\u0448\u0435\u043c \u043f\u0440\u0435\u0434\u043f\u043e\u043b\u0430\u0433\u0430\u0435\u0442\u0441\u044f) \u0438\u0437 6 \u0446\u0438\u0444\u0440<\/em>.<\/p>\n<p>  <\/p>\n<p><strong>\u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430?<\/strong><\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0438\u0437 `validator.js` const passportNumber = \/^\\d{2}\\d{2}\\d{6}$\/ \/\/ \u043c\u043e\u0436\u043d\u043e \u0443\u043f\u0440\u043e\u0441\u0442\u0438\u0442\u044c const _passportNumber = \/^\\d{10}$\/  const removeSpaces = (str) =&gt; str.replace(\/\\s+\/g, '')  const isPassportNumber = (str) =&gt; _passportNumber.test(removeSpaces(str))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u043e\u0440:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0432 \u0441\u0430\u043c\u043e\u043c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u043c \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0438 \u043d\u0435\u0442 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u043e\u0432\u043e\u0433\u043e \u2014 10 \u0446\u0438\u0444\u0440 (\u0438\u043b\u0438 2 \u0446\u0438\u0444\u0440\u044b + 2 \u0446\u0438\u0444\u0440\u044b + 6 \u0446\u0438\u0444\u0440 \u2014 \u0432 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b\u0435)<\/li>\n<li><code>removeSpaces()<\/code> \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u043d\u043e\u043c\u0435\u0440 \u043f\u0430\u0441\u043f\u043e\u0440\u0442\u0430 \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u043a\u0430\u043a <code>12 34 567890<\/code>, <code>1234 567890<\/code> \u0438 \u0442.\u0434.<\/li>\n<li><code>\\s<\/code> \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043f\u0440\u043e\u0431\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b: \u043f\u0440\u043e\u0431\u0435\u043b, \u0442\u0430\u0431\u0443\u043b\u044f\u0446\u0438\u044f, \u043f\u0435\u0440\u0435\u043d\u043e\u0441 \u0441\u0442\u0440\u043e\u043a\u0438 \u0438 \u0442.\u0434. (\u0441\u0438\u043c\u0432\u043e\u043b\u044c\u043d\u044b\u0439 \u043a\u043b\u0430\u0441\u0441)<\/li>\n<li><code>g<\/code> \u2014 \u0433\u043b\u043e\u0431\u0430\u043b\u044c\u043d\u044b\u0439 \u043f\u043e\u0438\u0441\u043a, \u0442.\u0435. \u0431\u0443\u0434\u0443\u0442 \u043e\u0431\u043d\u0430\u0440\u0443\u0436\u0435\u043d\u044b \u0432\u0441\u0435 \u043f\u0440\u043e\u0431\u0435\u043b\u044b, \u0438\u043c\u0435\u044e\u0449\u0438\u0435\u0441\u044f \u0432 \u0441\u0442\u0440\u043e\u043a\u0435, \u0430 \u043d\u0435 \u0442\u043e\u043b\u044c\u043a\u043e \u043f\u0435\u0440\u0432\u044b\u0439 (\u0444\u043b\u0430\u0433)<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0427\u0438\u0442\u0430\u0435\u043c: <em>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0414\u041e\u041b\u0416\u041d\u041e \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 10 \u0446\u0438\u0444\u0440<\/em>.<\/p>\n<p>  <\/p>\n<p><strong>\u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0447\u0438\u0441\u043b\u043e\u043c (\u0446\u0435\u043b\u044b\u043c \u0438\u043b\u0438 \u0441 \u043f\u043b\u0430\u0432\u0430\u044e\u0449\u0435\u0439 \u0442\u043e\u0447\u043a\u043e\u0439\/\u0437\u0430\u043f\u044f\u0442\u043e\u0439)?<\/strong><\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const numeric = (delimiter = '.') =&gt;   new RegExp(`^[+-]?([0-9]*\\\\${delimiter})?[0-9]+$`)  const isNumeric = (str, delimiter) =&gt; numeric(delimiter).test(str)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u043e\u0440:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>numeric<\/code> \u2014 \u0444\u0443\u043d\u043a\u0446\u0438\u044f, \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u044e\u0449\u0430\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0441 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u043c \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u0435\u043c (delimiter), \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b <code>.<\/code>; \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0438\u0437 \u0442\u0435\u0445 \u043d\u0435\u043c\u043d\u043e\u0433\u0438\u0445 \u0441\u043b\u0443\u0447\u0430\u0435\u0432, \u043a\u043e\u0433\u0434\u0430 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u043e\u0431\u044a\u0435\u043a\u0442 <code>RegExp<\/code>, \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u044e\u0449\u0438\u0439 \u0441\u043e\u0437\u0434\u0430\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u0438, \u0432 \u043e\u0442\u043b\u0438\u0447\u0438\u0435 \u043e\u0442 <code>\/\/<\/code>, \u0441\u043e\u0437\u0434\u0430\u044e\u0449\u0435\u0433\u043e \u0441\u0442\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438\u0439 \u0448\u0430\u0431\u043b\u043e\u043d<\/li>\n<\/ul>\n<p>  <\/p>\n<p><em>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/em>: \u0441\u0438\u043c\u0432\u043e\u043b <code>.<\/code> \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>\\<\/code> \u0438\u043b\u0438, \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <code>\\\\<\/code> (\u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>$<\/code>). \u042d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043f\u0440\u0435\u0432\u0440\u0430\u0449\u0430\u0435\u0442 <code>.<\/code> \u0432 \u043e\u0431\u044b\u0447\u043d\u0443\u044e \u0442\u043e\u0447\u043a\u0443, \u0432 \u043f\u0440\u043e\u0442\u0438\u0432\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u044d\u0442\u043e\u0442 \u0441\u0438\u043c\u0432\u043e\u043b \u0431\u0443\u0434\u0435\u0442 \u0438\u043c\u0435\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u2014 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b. \u041c\u044b \u0442\u0430\u043a\u0436\u0435 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u0443\u0435\u043c \u043b\u044e\u0431\u043e\u0439 \u0434\u0440\u0443\u0433\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u043f\u0435\u0440\u0435\u0434\u0430\u043d\u043d\u044b\u0439 \u0432 \u0444\u0443\u043d\u043a\u0446\u0438\u044e <code>isNumeric()<\/code> \u0432 \u043a\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f (\u043f\u043e\u0431\u043e\u0447\u043d\u044b\u0439 \u044d\u0444\u0444\u0435\u043a\u0442), \u043d\u043e \u044d\u0442\u043e \u043d\u0435 \u0441\u0442\u0440\u0430\u0448\u043d\u043e.<\/p>\n<p>  <\/p>\n<ul>\n<li>\n<p><code>?<\/code> \u2014 \u041d\u041e\u041b\u042c \u0438\u043b\u0438 \u041e\u0414\u0418\u041d \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b (\u043a\u0432\u0430\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440); \u043f\u043e \u0441\u0443\u0442\u0438, \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u044d\u0442\u043e\u0433\u043e \u043a\u0432\u0430\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440\u0430 \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u043c (\u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c)<\/p>\n<p>  <\/li>\n<li>\n<p><code>*<\/code> \u2014 \u041d\u041e\u041b\u042c \u0438\u043b\u0438 \u0411\u041e\u041b\u0415\u0415 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 (\u043a\u0432\u0430\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440); \u044d\u0442\u043e\u0442 \u043a\u0432\u0430\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0442\u043e\u0440 \u0442\u0430\u043a\u0436\u0435 \u0434\u0435\u043b\u0430\u0435\u0442 \u043f\u0440\u0435\u0434\u0448\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c<\/p>\n<p>  <\/li>\n<li>\n<p><code>[+-]?<\/code> \u2014 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 <code>+<\/code> \u0438\u043b\u0438 <code>-<\/code><\/p>\n<p>  <\/li>\n<li>\n<p><code>([0-9]*\\.)?<\/code> \u2014 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u041c\u041e\u0416\u0415\u0422 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0447\u0438\u0441\u043b\u0430 \u0438 \u0442\u043e\u0447\u043a\u0438 \u0418\u041b\u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0442\u043e\u0447\u043a\u0438 (\u0438\u043b\u0438 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044f)<\/p>\n<p>  <\/li>\n<li>\n<p><code>[0-9]+<\/code> \u2014 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u0430 \u0446\u0438\u0444\u0440\u0430<\/p>\n<p>  <\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0427\u0438\u0442\u0430\u0435\u043c: <em>\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u0414\u041e\u041b\u0416\u041d\u041e \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0438\u0437 \u043e\u0434\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u044b \u0438 \u041c\u041e\u0416\u0415\u0422 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0437\u043d\u0430\u043a <code>+<\/code> \u0438\u043b\u0438 <code>-<\/code> \u0432 \u043d\u0430\u0447\u0430\u043b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438, \u0437\u0430 \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u041c\u041e\u0416\u0415\u0422 \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u043b\u044e\u0431\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0446\u0438\u0444\u0440 \u0438 \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u0418\u041b\u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c<\/em><\/p>\n<p>  <\/p>\n<p><strong>\u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u0446\u0432\u0435\u0442\u043e\u043c \u0432 \u0448\u0435\u0441\u0442\u043d\u0430\u0434\u0446\u0430\u0442\u0438\u0440\u0438\u0447\u043d\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435?<\/strong><\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const hexColor = \/^#?([0-9A-F]{3}|[0-9A-F]{4}|[0-9A-F]{6}|[0-9A-F]{8})$\/i  const isRegexpColor = (str) =&gt; hexColor.test(str)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u043e\u0440:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u0434\u043b\u0438\u043d\u0430 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0438 \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u0443\u0433\u0430\u0442\u044c, \u043d\u043e \u044d\u0442\u043e \u0432\u0441\u0435\u0433\u043e \u043b\u0438\u0448\u044c \u043f\u043e\u0432\u0442\u043e\u0440\u044f\u044e\u0449\u0438\u0439\u0441\u044f \u0448\u0430\u0431\u043b\u043e\u043d<\/li>\n<li><code>#?<\/code> \u2014 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b <code>#<\/code><\/li>\n<li><code>[0-9A-F]{n}<\/code> \u2014 <code>n<\/code> \u043b\u044e\u0431\u044b\u0445 \u0447\u0438\u0441\u0435\u043b \u0418\u041b\u0418 \u0431\u0443\u043a\u0432 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b \u043e\u0442 <code>A<\/code> \u0434\u043e <code>F<\/code> (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430)<\/li>\n<li><code>|<\/code> \u2014 \u0430\u043b\u044c\u0442\u0435\u0440\u0430\u0446\u0438\u044f, \u0418\u041b\u0418 (\u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0441 \u043e\u0434\u043d\u0438\u043c \u0438\u0437 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u2014 \u043d\u0430\u0431\u043e\u0440\u043e\u0432)<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0427\u0438\u0442\u0430\u0435\u043c: <em>\u0441\u0442\u0440\u043e\u043a\u0430 \u0414\u041e\u041b\u0416\u041d\u0410 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u041b\u0418\u0411\u041e \u0438\u0437 3, \u041b\u0418\u0411\u041e \u0438\u0437 4, \u041b\u0418\u0411\u041e \u0438\u0437 6, \u041b\u0418\u0411\u041e \u0438\u0437 8 \u0431\u0443\u043a\u0432 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b \u043e\u0442 <code>A<\/code> \u0434\u043e <code>F<\/code> (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430) \u0418\/\u0418\u041b\u0418 \u0446\u0438\u0444\u0440 \u0438 \u041c\u041e\u0416\u0415\u0422 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b <code>#<\/code> \u0432 \u043d\u0430\u0447\u0430\u043b\u0435<\/em><\/p>\n<p>  <\/p>\n<p><em>\u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u0446\u0432\u0435\u0442\u043e\u043c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 <code>RGB<\/code> \u0438\u043b\u0438 <code>RGBA<\/code>?<\/em><\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ RGB \u0431\u0435\u0437 \u0430\u043b\u044c\u0444\u0430-\u043a\u0430\u043d\u0430\u043b\u0430 - \u043f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0441\u0442\u0438 const rgbColorRegexp =   \/^rgb\\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){2}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\)$\/  \/\/ RGBA \u0441 \u043f\u0440\u043e\u0437\u0440\u0430\u0441\u043d\u043e\u0441\u0442\u044c\u044e const rgbaColorRegexp =   \/^rgba\\((([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]),){3}(0?\\.\\d|1(\\.0)?|0(\\.0)?)\\)$\/  \/\/ RGB \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445 const rgbColorPercentRegexp =   \/^rgb\\((([0-9]%|[1-9][0-9]%|100%),){2}([0-9]%|[1-9][0-9]%|100%)\\)\/  \/\/ RGBA \u0432 \u043f\u0440\u043e\u0446\u0435\u043d\u0442\u0430\u0445 const rgbaColorPercentRegexp =   \/^rgba\\((([0-9]%|[1-9][0-9]%|100%),){3}(0?\\.\\d|1(\\.0)?|0(\\.0)?)\\)\/  \/\/ \u0441\u0442\u0440\u043e\u043a\u0430 \u0434\u043e\u043b\u0436\u043d\u0430 \u0441\u043e\u0432\u043f\u0430\u0434\u0430\u0442\u044c \u0445\u043e\u0442\u044f \u0431\u044b \u0441 \u043e\u0434\u043d\u0438\u043c \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u043c const isRgbColor = (str) =&gt;   rgbColorRegexp.test(str) ||   rgbaColorRegexp.test(str) ||   rgbColorPercentRegexp.test(str) ||   rgbaColorPercentRegexp.test(str)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0432\u0438\u0433\u0430\u0435\u043c\u0441\u044f \u0434\u0430\u043b\u044c\u0448\u0435.<\/p>\n<p>  <\/p>\n<p><strong>\u042f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u043e\u043c\u0435\u0440\u043e\u043c \u0441\u043e\u0442\u043e\u0432\u043e\u0433\u043e \u0442\u0435\u043b\u0435\u0444\u043e\u043d\u0430?<\/strong><\/p>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f (\u0434\u043b\u044f \u0420\u043e\u0441\u0441\u0438\u0438):<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const mobilePhoneRegexp = \/^(\\+?7|8)?9\\d{9}$\/  const removeNonDigits = (str) =&gt; replace(\/\\D+\/g, '')  const isMobilePhone = (str) =&gt; mobilePhoneRegexp.test(removeNonDigits(str))<\/code><\/pre>\n<p>  <\/p>\n<p>\u0420\u0430\u0437\u0431\u043e\u0440:<\/p>\n<p>  <\/p>\n<ul>\n<li><code>\\+?<\/code> \u2014 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0439 \u0441\u0438\u043c\u0432\u043e\u043b <code>+<\/code>; <em>\u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/em> \u043d\u0430 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435<\/li>\n<li><code>(\\+?7|8)?<\/code> \u2014 \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u0430\u044f \u0433\u0440\u0443\u043f\u043f\u0430, \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u041c\u041e\u0416\u0415\u0422 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 <code>+<\/code> \u0438 \u0447\u0438\u0441\u043b\u0430 <code>7<\/code> \u0438\u043b\u0438 <code>8<\/code> \u0418\u041b\u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u0438\u0437 \u0447\u0438\u0441\u043b\u0430 <code>7<\/code> \u0438\u043b\u0438 <code>8<\/code><\/li>\n<li><code>removeNonDigits()<\/code> \u2014 \u0443\u0442\u0438\u043b\u0438\u0442\u0430 \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0432\u0441\u0435\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u0447\u0438\u0441\u043b\u043e\u043c (<code>\\D<\/code>)<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u0427\u0438\u0442\u0430\u0435\u043c: <em>\u0441\u0442\u0440\u043e\u043a\u0430 \u0414\u041e\u041b\u0416\u041d\u0410 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 10 \u0446\u0438\u0444\u0440, \u043f\u0435\u0440\u0432\u044b\u043c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0414\u041e\u041b\u0416\u041d\u041e \u0411\u042b\u0422\u042c \u0447\u0438\u0441\u043b\u043e <code>9<\/code>, \u0438 \u041c\u041e\u0416\u0415\u0422 \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b <code>+<\/code> \u0438 \u0447\u0438\u0441\u043b\u043e <code>7<\/code> \u0438\u043b\u0438 <code>8<\/code> \u0418\u041b\u0418 \u0442\u043e\u043b\u044c\u043a\u043e \u0447\u0438\u0441\u043b\u043e <code>7<\/code> \u0438\u043b\u0438 <code>8<\/code> \u0432 \u043d\u0430\u0447\u0430\u043b\u0435<\/em><\/p>\n<p>  <\/p>\n<p><em>\u041b\u0438\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u043e\u0442\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435<\/em><\/p>\n<p>  <\/p>\n<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u0435\u043c, \u043a\u0430\u043a \u043f\u0435\u0440\u0435\u0445\u043e\u0434\u0438\u0442\u044c \u043a \u0441\u0430\u043c\u043e\u0439 \u0441\u043b\u043e\u0436\u043d\u043e\u0439 \u0447\u0430\u0441\u0442\u0438, \u043f\u043e\u0438\u0433\u0440\u0430\u0435\u043c \u0441 \u0440\u0435\u0434\u043a\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u043c\u044b\u043c\u0438, \u043d\u043e \u043e\u0442 \u0442\u043e\u0433\u043e \u043d\u0435 \u043c\u0435\u043d\u0435\u0435 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439.<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 PNG, JPG, JPEG \u0438\u043b\u0438 SVG \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u043f\u0435\u0440\u0435\u0436\u0430\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \/\/ \u0421\u0442\u0440\u043e\u043a\u0430 \u0414\u041e\u041b\u0416\u041d\u0410 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0438 \u0431\u043e\u043b\u0435\u0435 (\u043b\u044e\u0431\u043e\u0433\u043e) \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u0432\u043a\u043b\u044e\u0447\u0430\u0442\u044c \u0442\u043e\u0447\u043a\u0443 \u0438 \u0437\u0430\u043a\u0430\u043d\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430 `png`, `jpg`, `jpeg` \u0438\u043b\u0438 `svg` (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430) const isImage = (str) =&gt; \/.+\\.(?=png|jpe?g|gif|svg)\/i.test(str)  \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u0447\u0442\u043e \u0441\u0442\u0440\u043e\u043a\u0430 \u041d\u0415 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0437\u0432\u0430\u043d\u0438\u0435\u043c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 WebP \u0438\u043b\u0438 AVIF \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u043e\u043f\u0435\u0440\u0435\u0436\u0430\u044e\u0449\u0435\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \/\/ \u041f\u041e\u0421\u041b\u0415 \u0441\u0442\u0440\u043e\u043a\u0438, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0435\u0439 \u0438\u0437 \u043e\u0434\u043d\u043e\u0433\u043e \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430, \u041d\u0415 \u0414\u041e\u041b\u0416\u041d\u041e \u0431\u044b\u0442\u044c \u0441\u043b\u043e\u0432\u0430 `webp` \u0438\u043b\u0438 `avif` (\u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430) const isNotWebpOrAvif = (str) =&gt; \/.+\\.(?!webp|avif)\/i.test(str)  \/\/ \u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0440\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438, \u0442\u043e \u044f \u043d\u0435 \u0441\u043c\u043e\u0433 \u043f\u0440\u0438\u0434\u0443\u043c\u0430\u0442\u044c \u0434\u043e\u0441\u0442\u043e\u0439\u043d\u043e\u0433\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u0430 - \u0442\u0430\u043a\u043e\u0433\u043e, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0431\u044b \u0438\u043c\u0435\u043b \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u043f\u0440\u0435\u0438\u043c\u0443\u0449\u0435\u0441\u0442\u0432\u0430 \u043f\u043e \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u044e \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u043c\u0435\u0442\u043e\u0434\u0430 `startsWith()`  \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0434\u043e\u043b\u043b\u0430\u0440\u0430\u043c\u0438 \u0421\u0428\u0410 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \/\/ \u041f\u0415\u0420\u0415\u0414 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u043e\u0439 \u0414\u041e\u041b\u0416\u0415\u041d \u0431\u044b\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b `$` const isUSD = (str) =&gt; \/(?&lt;=\\$)\\d+\/.test(str)  \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u0447\u0442\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u041d\u0415 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0432\u0440\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043d\u0435\u0433\u0430\u0442\u0438\u0432\u043d\u043e\u0439 \u0440\u0435\u0442\u0440\u043e\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 \/\/ \u041f\u0415\u0420\u0415\u0414 \u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u043e\u0439 \u041d\u0415 \u0414\u041e\u041b\u0416\u041d\u041e \u0431\u044b\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b\u0430 `\u20ac` const isNotEUR = (str) =&gt; \/(?&lt;!\u20ac)\\d+\/.test(str)  \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u044d\u043c\u043e\u0434\u0437\u0438 (\u0438\u043b\u0438 \u044d\u043c\u043e\u0434\u0436\u0438) \/\/ \u0424\u043b\u0430\u0433 `u` \u0438 \u043a\u043b\u0430\u0441\u0441 `\\p{...}` - \u0442\u0435\u043c\u0430 \u0434\u043b\u044f \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0433\u043e\u0432\u043e\u0440\u0430, however... const isEmoji = (str) =&gt; \/\\p{So}\/u.test(str)  \/\/ \u0423\u043d\u0438\u0432\u0435\u0440\u0441\u0430\u043b\u044c\u043d\u0430\u044f \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 \u043d\u0430 \u043b\u044e\u0431\u043e\u043c \u044f\u0437\u044b\u043a\u0435 const languageAgnostic = \/[\\p{Alpha}\\p{M}\\p{Nd}\\p{Pc}\\p{Join_C}]\/u  const isLanguageAgnosticSymbol = (str) =&gt; languageAgnostic.test(str)<\/code><\/pre>\n<p>  <\/p>\n<p><em>\u0415\u0449\u0435 \u043f\u0430\u0440\u043e\u0447\u043a\u0430 \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0443\u0442\u0438\u043b\u0438\u0442<\/em><\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 HTML-\u0442\u0435\u0433\u043e\u043c \/\/ [^&gt;] - \u043e\u0437\u043d\u0430\u0447\u0430\u0435\u0442 \u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b, \u043a\u0440\u043e\u043c\u0435 `&gt;` \/\/ ([^&gt;]+) - \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0442\u0430\u043a\u0438\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 const isHTMLTag = (str) =&gt; \/(^&lt;([^&gt;]+)&gt;$)\/i.test(str)  const tag =   '&lt;p id=&quot;myID&quot; class=&quot;my-class&quot; data-type=&quot;my_type&quot; style=&quot;color: green;&quot;&gt;'  console.log(isHTMLTag(tag)) \/\/ true  \/\/ \u041d\u0430\u0445\u043e\u0434\u0438\u043c \u0441\u043b\u043e\u0432\u0430 \u0432 \u043e\u0434\u0438\u043d\u0430\u0440\u043d\u044b\u0445 \u0438\u043b\u0438 \u0434\u0432\u043e\u0439\u043d\u044b\u0445 (\u043f\u0430\u0440\u043d\u044b\u0445) \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445 \/\/ \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435: \u0432 \u0434\u0430\u043d\u043d\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043c\u044b \u043d\u0435 \u0443\u0447\u0438\u0442\u044b\u0432\u0430\u0435\u043c, \u0447\u0442\u043e \u043a\u0430\u0432\u044b\u0447\u043a\u0438 \u043c\u043e\u0433\u0443\u0442 \u0431\u044b\u0442\u044c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u044b const quotes = \/([&quot;'])([^&quot;'])*\\1\/g const getQuottedWords = (str) =&gt; str.match(quotes)  const str = `some string with &quot;double quotes&quot; and 'single quotes'`  console.log(getQuottedWords(str).join('\\n')) \/*   &quot;double quotes&quot;   'single quotes' *\/  \/\/ \u0438\u043b\u0438 \u0442\u0430\u043a (\u043a\u043e\u0440\u043e\u0447\u0435, \u043d\u043e \u0442\u0430\u043a\u0436\u0435 \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f) const _quotes = \/([&quot;']).*\\1\/g  \/\/ \u0438\u043b\u0438 \u0442\u0430\u043a (\u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u044d\u043a\u0440\u0430\u043d\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f) const __quotes = \/([&quot;'])([^&quot;'\\\\])*\\1\/g const _getQuottedWords = (str) =&gt; str.match(__quotes)  const str = &quot;some string with \\&quot;escaped double quotes\\&quot;&quot;  console.log(..._getQuottedWords(str)) \/\/ &quot;escaped double quotes&quot;  \/\/ \u041e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0441\u0442\u0440\u043e\u043a\u0430 \u0432\u0440\u0435\u043c\u0435\u043d\u0435\u043c \u0432 \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0427\u0427:\u041c\u041c:\u0421\u0421 \/\/ \u0421\u0442\u0440\u043e\u043a\u0430 \u0414\u041e\u041b\u0416\u041d\u0410 \u043d\u0430\u0447\u0438\u043d\u0430\u0442\u044c\u0441\u044f \u0441 1 \u0441 \u0432\u0435\u0434\u0443\u0449\u0438\u043c 0 \u0438\u043b\u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e \u0438 \u043b\u044e\u0431\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c (01-19) \u0418\u041b\u0418 \/\/ 2 \u0438 \u043b\u044e\u0431\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u0430\u043d\u0435 \u043e\u0442 0 \u0434\u043e 3 (20-23) - \u0447\u0430\u0441\u044b, \/\/ \u0437\u0430\u0442\u0435\u043c \u0414\u041e\u041b\u0416\u041d\u042b \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u044c \u0434\u0432\u0435 \u0433\u0440\u0443\u043f\u043f\u044b, \u0441\u043e\u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u0438\u0437 \u0434\u0432\u043e\u0435\u0442\u043e\u0447\u0438\u044f \u0438 \u043b\u044e\u0431\u043e\u0433\u043e \u0434\u0432\u0443\u0445\u0437\u043d\u0430\u0447\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430, \/\/ \u043f\u0435\u0440\u0432\u0430\u044f \u0446\u0438\u0444\u0440\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u0433\u043e \u0414\u041e\u041b\u0416\u041d\u0410 \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u0432 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d\u0435 \u043e\u0442 0 \u0434\u043e 5 (01-59) - \u0447\u0430\u0441\u044b \u0438 \u043c\u0438\u043d\u0443\u0442\u044b const isTime = (str) =&gt; \/([01]\\d|2[0-3])(:[0-5]\\d){2}$\/.test(str)  console.log(isTime('12:00')) \/\/ false console.log(isTime('12:00:00')) \/\/ true<\/code><\/pre>\n<p>  <\/p>\n<p><em>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 \u0412\u0421\u0415\u0425 \u043f\u0440\u043e\u0431\u0435\u043b\u043e\u0432<\/em><\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const str = '  some   string  with   crazy    spaces '  const formatted = str   .replace(\/\\s{2,}\/g, ' ')   .trim()   .replace('crazy', 'normal')  console.log(formatted) \/\/ 'some string with normal spaces'<\/code><\/pre>\n<p>  <\/p>\n<p><em>\u0424\u0443\u043d\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u0442\u044b<\/em><\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ \u0412 \u0442\u0430\u043a\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435 \u0432\u043e\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442\u0441\u044f \u0434\u0430\u0442\u0430 \u0438\u0437 `&lt;input type=&quot;date&quot;&gt;` const str = '2021-06-29' \/\/ \u0434\u043e\u043f\u0443\u0441\u0442\u0438\u043c, \u0447\u0442\u043e \u043c\u044b \u0445\u043e\u0442\u0438\u043c \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u0442\u044c \u0435\u0435 \u0432 \u043f\u0440\u0438\u0432\u044b\u0447\u043d\u044b\u0439 \u0434\u043b\u044f \u043d\u0430\u0441 \u0444\u043e\u0440\u043c\u0430\u0442 - `\u0414\u0414.\u041c\u041c.\u0413\u0413\u0413\u0413`  \/\/ \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u043e\u0431\u044b\u0447\u043d\u044b\u0445 \u0441\u043a\u043e\u0431\u043e\u0447\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0441\u043a\u043e\u0431\u043e\u0447\u043d\u044b\u0435 \u0433\u0440\u0443\u043f\u043f\u044b 1, 2 \u0438 3 const regexp = \/(\\d{4})-(\\d{2})-(\\d{2})\/  \/\/ \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u0437\u0430\u043c\u0435\u043d\u0443 const formatted = str.replace(regexp, '$3.$2.$1') console.log(formatted) \/\/ 29.06.2021  \/\/ \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0433\u0440\u0443\u043f\u043f \u0437\u0430\u0445\u0432\u0430\u0442\u0430 \/\/ \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u044f\u0435\u043c \u0433\u0440\u0443\u043f\u043f\u044b `year`, `month` \u0438 `day`, \/\/ \u0447\u0442\u043e\u0431\u044b \u043d\u0435 \u0437\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0442\u044c (\u0441\u0447\u0438\u0442\u0430\u0442\u044c) \u043d\u043e\u043c\u0435\u0440\u0430 \u0433\u0440\u0443\u043f\u043f (\u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043a\u043e\u0431\u043e\u043a) const _regexp = \/(?&lt;year&gt;\\d{4})-(?&lt;month&gt;\\d{2})-(?&lt;day&gt;\\d{2})\/  \/\/ \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u043c \u0437\u0430\u043c\u0435\u043d\u0443 const _formatted = str.replace(_regexp, '$&lt;day&gt;.$&lt;month&gt;.$&lt;year&gt;') console.log(_formatted) \/\/ 29.06.2021  \/\/ \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0444\u0443\u043d\u043a\u0446\u0438\u0438-\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u0435\u043b\u044f \/\/ \u044d\u0442\u043e \u043d\u0435 \u0438\u043c\u0435\u0435\u0442 \u043e\u0441\u043e\u0431\u043e\u0433\u043e \u0441\u043c\u044b\u0441\u043b\u0430, \u043f\u0440\u043e\u0441\u0442\u043e \u0434\u043b\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u0430 const regexp = \/(\\d{4})-(\\d{2})-(\\d{2})\/  const result = str.replace(   regexp,   \/\/ \u043f\u0435\u0440\u0432\u044b\u0439 \u0430\u0440\u0433\u0443\u043c\u0435\u043d\u0442, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043d\u0430\u043c \u043d\u0435 \u043d\u0443\u0436\u0435\u043d - \u044d\u0442\u043e \u043e\u0431\u044a\u0435\u043a\u0442 \u0441\u043e\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u044f `match`   (_, year, month, day) =&gt; `${day}.${month}.${year}` ) console.log(result) \/\/ 29.06.2021<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u043f\u0435\u0440\u044c \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e \u0441\u0442\u0440\u043e\u043a\u0430\u0445, \u043a \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044e \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043e\u0441\u043e\u0431\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f. \u041f\u043e\u0434 \u0442\u0430\u043a\u0438\u043c\u0438 \u0441\u0442\u0440\u043e\u043a\u0430\u043c\u0438 \u044f \u043f\u043e\u0434\u0440\u0430\u0437\u0443\u043c\u0435\u0432\u0430\u044e <code>URL<\/code> (\u0438\u043b\u0438, \u0435\u0441\u043b\u0438 \u0443\u0433\u043e\u0434\u043d\u043e, <code>URI<\/code>) \u0438 <code>email<\/code>. \u0412 \u043f\u0440\u0438\u043d\u0446\u0438\u043f\u0435, \u0441\u044e\u0434\u0430 \u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u043e\u0442\u043d\u0435\u0441\u0442\u0438 \u043f\u0430\u0440\u043e\u043b\u0438, \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043a \u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u044e\u0442\u0441\u044f \u043d\u0435 \u043d\u043e\u0440\u043c\u0430\u0442\u0438\u0432\u043d\u044b\u043c\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430\u043c\u0438 (<code>RFC<\/code>), \u0430 \u043a\u043b\u0438\u0435\u043d\u0442\u0430\u043c\u0438\/\u0437\u0430\u043a\u0430\u0437\u0447\u0438\u043a\u0430\u043c\u0438\/\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u0430\u043c\u0438.<\/p>\n<p>  <\/p>\n<p><strong><code>URL<\/code><\/strong><\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/URL\"><code>URL<\/code><\/a> (Uniform Resource Locator \u2014 \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0443\u043a\u0430\u0437\u0430\u0442\u0435\u043b\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u0430) \u2014 \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043d\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0445 \u0430\u0434\u0440\u0435\u0441\u043e\u0432 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432, \u0438\u043b\u0438 \u0435\u0434\u0438\u043d\u043e\u043e\u0431\u0440\u0430\u0437\u043d\u044b\u0439 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0438\u0442\u0435\u043b\u044c \u043c\u0435\u0441\u0442\u043e\u043d\u0430\u0445\u043e\u0436\u0434\u0435\u043d\u0438\u044f \u0440\u0435\u0441\u0443\u0440\u0441\u0430.<\/p>\n<p>  <\/p>\n<p>\u041e\u043d \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/vn\/fy\/0b\/vnfy0bna38z6docfuvkamctaeam.png\">  <\/p>\n<p>\u0422\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f, \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u0435\u043c\u044b\u0435 \u043a &quot;\u0443\u0440\u043b\u0430\u043c&quot;, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u0441\u044f, \u0432 \u043e\u0441\u043d\u043e\u0432\u043d\u043e\u043c, \u0432 <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc3986\"><code>RFC 3986<\/code><\/a>. \u0421\u043e\u0433\u043b\u0430\u0441\u043d\u043e \u044d\u0442\u043e\u043c\u0443 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443 <code>URL<\/code> \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0442\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~:\/?#[]@!$&amp;'()*+,;=<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u043d\u0435 \u0443\u0442\u043e\u0447\u043d\u044f\u0435\u0442\u0441\u044f, \u0432 \u043a\u0430\u043a\u043e\u0439 \u0447\u0430\u0441\u0442\u0438 <code>URL<\/code> \u043a\u0430\u043a\u0438\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f.<\/p>\n<p>  <\/p>\n<p>\u0422\u0430\u043a\u0436\u0435 \u0432 \u043d\u0430\u0437\u0432\u0430\u043d\u043d\u043e\u043c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0435 \u043f\u0440\u0438\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0431\u043e\u0440\u0430 \u0443\u0440\u043b\u043e\u0432 (\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 <code>B<\/code>), \u043a\u043e\u0442\u043e\u0440\u0430\u044f \u0432\u044b\u0433\u043b\u044f\u0434\u0438\u0442 \u0442\u0430\u043a (\u0447\u0438\u0441\u043b\u0430 \u2014 \u044d\u0442\u043e \u043d\u043e\u043c\u0435\u0440\u0430 \u0433\u0440\u0443\u043f\u043f):<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?  12            3  4          5       6  7        8 9<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0435\u0435 \u043f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const url = \/^(([^:\\\/?#]+):)?(\\\/\\\/([^\\\/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?\/ const str = 'https:\/\/example.com\/main?search#hash' const result = str.match(url) console.log(result) \/*   [     0: &quot;https:\/\/example.com\/main?search#hash&quot;     1: &quot;https:&quot;     2: &quot;https&quot;     3: &quot;\/\/example.com&quot;     4: &quot;example.com&quot;     5: &quot;\/main&quot;     6: &quot;?search&quot;     7: &quot;search&quot;     8: &quot;#hash&quot;     9: &quot;hash&quot;     \/\/ ...   ] *\/<\/code><\/pre>\n<p>  <\/p>\n<p>\u0414\u0430\u043d\u043d\u0430\u044f \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0430 \u043e\u0442\u043b\u0438\u0447\u043d\u043e \u043f\u043e\u0434\u0445\u043e\u0434\u0438\u0442 \u0434\u043b\u044f \u043f\u0440\u043e\u0441\u0442\u044b\u0445 <code>URL<\/code> (\u043a\u0430\u043a \u0432 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435), \u043d\u043e \u0432 \u0431\u043e\u043b\u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u044b\u0445 \u0441\u043b\u0443\u0447\u0430\u044f\u0445 \u043b\u0443\u0447\u0448\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0442\u043e\u0440 <code>URL()<\/code>:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const str = 'https:\/\/user:pwd@example.com:80\/main?query#anchor' const result = new URL(str) console.log(result) \/*   {     hash: &quot;#anchor&quot;     host: &quot;example.com:80&quot;     hostname: &quot;example.com&quot;     href: &quot;https:\/\/user:pwd@example.com:80\/main?query#anchor&quot;     origin: &quot;https:\/\/example.com:80&quot;     password: &quot;pwd&quot;     pathname: &quot;\/main&quot;     port: &quot;80&quot;     protocol: &quot;https:&quot;     search: &quot;?query&quot;   } *\/<\/code><\/pre>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u043e\u0434\u0438\u043d \u0438\u0437 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u044b\u0445 \u0432\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0438 \u0434\u043b\u044f \u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0438 <code>URL<\/code> \u0441 \u0443\u0447\u0435\u0442\u043e\u043c \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430 <code>http(s)<\/code>, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">\/   https?:\\\/\\\/               - `http` \u0441 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u043c `s`   (www\\.)?                  - \u043e\u043f\u0446\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 `www` \u0438 `.`   [-\\w@:%\\.\\+~#=]{1,256}    - \u043b\u044e\u0431\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430 \u0432 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0435 1-256   \\.                        - \u0442\u043e\u0447\u043a\u0430   [a-z0-9()]{2,}            - \u0434\u043e\u043c\u0435\u043d \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u043c \u043e\u0442 2 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432   \\b                        - \u0433\u0440\u0430\u043d\u0438\u0446\u0430 \u0441\u0442\u0440\u043e\u043a\u0438   ([-\\w()@:%\\.\\+~#=\/\/?&amp;]*)  - \u043f\u043e\u0434\u0434\u043e\u043c\u0435\u043d, \u0441\u0442\u0440\u043e\u043a\u0430 \u0437\u0430\u043f\u0440\u043e\u0441\u0430, \u044f\u043a\u043e\u0440\u044c \u0438 \u0442.\u0434. \/i<\/code><\/pre>\n<p>  <\/p>\n<p>\u0422\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const url =   \/https?:\\\/\\\/(www\\.)?[-\\w@:%\\.\\+~#=]{1,256}\\.[a-z0-9()]{1,6}\\b([-\\w()@:%\\.\\+~#=\/\/?&amp;]*)\/i  const urls = [   'http:\/\/www.example.ru',   'https:\/\/www.example.ru',   'http:\/\/example.ru',   'http:\/\/www.example.ru\/main',   'htt:\/\/example.ru',   'www.example.ru',   'www.mp3.com',   'www.e.org',   'http:\/\/e.org',   'http:\/\/www.e.org',   'https:\/\/www.e.org',   'www.ab.com',   'http:\/\/ab.com',   'http:\/\/www.ab.com',   'https:\/\/www.ab.com',   'www.example',   'www.example-.ru',   'www.-example.ru',   'example.ru',   'http:\/\/www.example',   'http:\/\/example',   'www.mp3#.com' ]  urls.forEach((u) =&gt; {   if (url.test(u)) {     console.log(`%cCorrect: ${u}`, 'color: green;')   } else {     console.info(`%cWrong: ${u}`, 'color: red;')   } }) \/*   Correct: http:\/\/www.example.ru   Correct: https:\/\/www.example.ru   Correct: http:\/\/example.ru   Correct: http:\/\/www.example.ru\/main   Wrong: htt:\/\/example.ru   Wrong: www.example.ru   Wrong: www.mp3.com   Wrong: www.e.org   Correct: http:\/\/e.org   Correct: http:\/\/www.e.org   Correct: https:\/\/www.e.org   Wrong: www.ab.com   Correct: http:\/\/ab.com   Correct: http:\/\/www.ab.com   Correct: https:\/\/www.ab.com   Wrong: www.example   Wrong: www.example-.ru   Wrong: www.-example.ru   Wrong: example.ru   Wrong: http:\/\/www.example   Wrong: http:\/\/example   Wrong: www.mp3#.com *\/<\/code><\/pre>\n<p>  <\/p>\n<p><strong><code>Email<\/code><\/strong><\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D1%87%D1%82%D0%B0\">\u042d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0430\u044f \u043f\u043e\u0447\u0442\u0430<\/a> \u2014 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u044f \u0438 \u0441\u043b\u0443\u0436\u0431\u0430 \u043f\u043e \u043f\u0435\u0440\u0435\u0441\u044b\u043b\u043a\u0435 \u0438 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u0438\u044e \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u044b\u0445 \u0441\u043e\u043e\u0431\u0449\u0435\u043d\u0438\u0439 \u043c\u0435\u0436\u0434\u0443 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c\u0438 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043d\u043e\u0439 \u0441\u0435\u0442\u0438.<\/p>\n<p>  <\/p>\n<p>\u0410\u0434\u0440\u0435\u0441 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b (<code>email<\/code>) \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0438\u0437 \u0438\u0437 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0445 \u0447\u0430\u0441\u0442\u0435\u0439:<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/rq\/hn\/8j\/rqhn8jj-zy97glg7kcauddtz0hc.jpeg\">  <\/p>\n<p>\u0427\u0442\u043e \u043a\u0430\u0441\u0430\u0435\u0442\u0441\u044f \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043c\u043e\u0433\u0443\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u0430\u0434\u0440\u0435\u0441\u0435 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b, \u0442\u043e \u0437\u0434\u0435\u0441\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044f \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u043d\u0435\u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u0430\u044f, \u043f\u043e\u0441\u043a\u043e\u043b\u044c\u043a\u0443 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u0431\u043e\u043b\u044c\u0448\u043e\u0435 \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e <code>RFC<\/code>, \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443 \u0440\u0435\u0433\u043b\u0430\u043c\u0435\u043d\u0442\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u044d\u0442\u043e\u0442 \u0432\u043e\u043f\u0440\u043e\u0441. \u041e\u0442\u043d\u043e\u0441\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u043f\u043e\u043b\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a \u044d\u0442\u0438\u0445 <code>RFC<\/code> \u043c\u043e\u0436\u043d\u043e \u043d\u0430\u0439\u0442\u0438 <a href=\"https:\/\/www.fastmail.help\/hc\/en-us\/articles\/1500000278382-Email-standards\">\u0437\u0434\u0435\u0441\u044c<\/a>.<\/p>\n<p>  <\/p>\n<p>\u0412 \u043f\u0440\u043e\u0441\u0442\u0435\u0439\u0448\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435, \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0434\u043b\u044f \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u043e\u0433\u043e, \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043b\u0438 \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435 <code>email<\/code>, \u043c\u043e\u0436\u0435\u0442 \u0432\u044b\u0433\u043b\u044f\u0434\u0435\u0442\u044c \u0442\u0430\u043a:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ (\u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d (\u043b\u044e\u0431\u043e\u0439) \u0441\u0438\u043c\u0432\u043e\u043b)@(\u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b).(\u0445\u043e\u0442\u044f \u0431\u044b \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b) const isEmail = (str) =&gt; \/^(.+)@(.+)\\.(.+)$\/.test(str)<\/code><\/pre>\n<p>  <\/p>\n<p>\u0418\u043b\u0438 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u043e\u0439\u0442\u0438\u0441\u044c \u0432\u043e\u043e\u0431\u0449\u0435 \u0431\u0435\u0437 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432 const isEmail = ([...str]) =&gt;   \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0435\u0441\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b `@`, \u043e\u043d \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f, \u043a\u0430\u043a \u043c\u0438\u043d\u0438\u043c\u0443\u043c, \u043d\u0430 \u0432\u0442\u043e\u0440\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438   str.indexOf('@') &gt; 0 &amp;&amp;   \/\/ \u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0435\u0434\u0438\u043d\u0441\u0442\u0432\u0435\u043d\u043d\u044b\u043c   str.indexOf('@') === str.lastIndexOf('@') &amp;&amp;   \/\/ \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c, \u0447\u0442\u043e \u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0435 \u0435\u0441\u0442\u044c \u0442\u043e\u0447\u043a\u0430,   str.indexOf('.') &gt; 0 &amp;&amp;   \/\/ \u043e\u043d\u0430 \u0441\u0442\u043e\u0438\u0442 \u043f\u043e\u0441\u043b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u0430 `@`   str.indexOf('@') &lt; str.indexOf('.') &amp;&amp;   \/\/ \u0438 \u043d\u0435 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0438\u043c \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u043c   str.indexOf('.') &lt; str.length - 1<\/code><\/pre>\n<p>  <\/p>\n<p>\u041e\u0434\u043d\u0430\u043a\u043e, <code>\u043b\u044e\u0431\u043e\u0439 \u0441\u0438\u043c\u0432\u043e\u043b<\/code> \u2014 \u044d\u0442\u043e \u043a\u0430\u043a <code>any<\/code> \u0432 <code>TypeScript<\/code> \u2014 \u043e\u0431\u0443\u0441\u043b\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u0442 \u043d\u0435\u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0433\u043e \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f. \u041d\u043e, \u0441 \u043f\u043e\u0432\u044b\u0448\u0435\u043d\u0438\u0435\u043c \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0438, \u0435\u0435 \u0441\u043b\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u0440\u0430\u0441\u0442\u0435\u0442 \u0432 \u0433\u0435\u043e\u043c\u0435\u0442\u0440\u0438\u0447\u0435\u0441\u043a\u043e\u0439 \u043f\u0440\u043e\u0433\u0440\u0435\u0441\u0441\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412\u043e\u0442 \u0433\u043e\u0440\u0430\u0437\u0434\u043e \u0431\u043e\u043b\u0435\u0435 \u043f\u0440\u043e\u0434\u0432\u0438\u043d\u0443\u0442\u044b\u0439 (\u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439) \u043f\u0440\u0438\u043c\u0435\u0440:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">\/^   (     (       [^&lt;&gt;()[\\]\\\\.,;:\\s@&quot;]+   - \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043c\u0432\u043e\u043b, \u043a\u0440\u043e\u043c\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445       (\\. - \u0442\u043e\u0447\u043a\u0430         [^&lt;&gt;()[\\]\\\\.,;:\\s@&quot;]+ - \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043c\u0432\u043e\u043b, \u043a\u0440\u043e\u043c\u0435 \u0443\u043a\u0430\u0437\u0430\u043d\u043d\u044b\u0445       )       *                       - \u043d\u043e\u043b\u044c \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435     )     |                         - \u0418\u041b\u0418     (&quot;.+&quot;)                    - \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0441\u0438\u043c\u0432\u043e\u043b \u0432 \u0434\u0432\u043e\u0439\u043d\u044b\u0445 \u043a\u0430\u0432\u044b\u0447\u043a\u0430\u0445   )     @                         - \u0441\u0438\u043c\u0432\u043e\u043b `@`   (     (       \\[                      - \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430         [0-9]{1,3}            - \u043e\u0442 1 \u0434\u043e 3 \u0446\u0438\u0444\u0440         \\.                    - \u0442\u043e\u0447\u043a\u0430         [0-9]{1,3}         \\.         [0-9]{1,3}         \\.         [0-9]{1,3}       \\]                      - \u0437\u0430\u043a\u0440\u044b\u0432\u0430\u044e\u0449\u0430\u044f \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043d\u0430\u044f \u0441\u043a\u043e\u0431\u043a\u0430     )     | - \u0418\u041b\u0418     (       (         [-a-z0-9]+            - \u043e\u0434\u043d\u0430 \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435 \u0431\u0443\u043a\u0432\u0430 \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b, \u0446\u0438\u0444\u0440\u0430 \u0438\u043b\u0438 \u0441\u0438\u043c\u0432\u043e\u043b `-`         \\.                    - \u0442\u043e\u0447\u043a\u0430       )+                      - \u043e\u0434\u0438\u043d \u0438\u043b\u0438 \u0431\u043e\u043b\u0435\u0435       [a-z]{2,}               - \u0445\u043e\u0442\u044f \u0431\u044b `2` \u0431\u0443\u043a\u0432\u044b \u043b\u0430\u0442\u0438\u043d\u0438\u0446\u044b     )   ) $\/i                           - \u0431\u0435\u0437 \u0443\u0447\u0435\u0442\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0430<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const email =   \/^(([^&lt;&gt;()[\\]\\\\.,;:\\s@&quot;]+(\\.[^&lt;&gt;()[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-z\\-0-9]+\\.)+[a-z]{2,}))$\/i  const isEmail = (str) =&gt; email.test(str)  \/\/ \u0442\u0435\u0441\u0442\u0438\u0440\u0443\u0435\u043c \/\/ \u0432\u043c\u0435\u0441\u0442\u043e `@`, \u043d\u0430\u043f\u0438\u0441\u0430\u043b\u0438 `_` console.log(isEmail('my_mail.com')) \/\/ false \/\/ \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 `.` console.log(isEmail('my@mailcom')) \/\/ false \/\/ \u043f\u0440\u043e\u043f\u0443\u0441\u0442\u0438\u043b\u0438 \u043d\u0430\u0447\u0430\u043b\u043e console.log(isEmail('@mail.com')) \/\/ false \/\/ \u043e\u043a console.log(isEmail('my@mail.com')) \/\/ true<\/code><\/pre>\n<p>  <\/p>\n<p><strong>\u041f\u0430\u0440\u043e\u043b\u044c<\/strong><\/p>\n<p>  <\/p>\n<p>\u041a \u043f\u0430\u0440\u043e\u043b\u044e \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0435\u0434\u044a\u044f\u0432\u043b\u044f\u0442\u044c\u0441\u044f \u0441\u0430\u043c\u044b\u0435 \u0440\u0430\u0437\u043d\u044b\u0435 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f. \u041a\u0430\u043a \u043f\u0440\u0430\u0432\u0438\u043b\u043e, \u0441\u0440\u0435\u0434\u0438 \u0442\u0430\u043a\u0438\u0445 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u0439 \u0437\u043d\u0430\u0447\u0438\u0442\u0441\u044f \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435:<\/p>\n<p>  <\/p>\n<ul>\n<li>\u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 \u0438\u043b\u0438 \u0434\u0438\u0430\u043f\u0430\u0437\u043e\u043d \u043f\u0430\u0440\u043e\u043b\u044f, \u0442.\u0435. \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0418\u041b\u0418 \u043c\u0438\u043d\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u0438 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u043e\u0433\u043e \u043a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432<\/li>\n<li>\u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u043d\u0430 \u0431\u043e\u043b\u044c\u0448\u0430\u044f \u0431\u0443\u043a\u0432\u0430<\/li>\n<li>\u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u043d\u0430 \u043c\u0430\u043b\u0435\u043d\u044c\u043a\u0430\u044f \u0431\u0443\u043a\u0432\u0430<\/li>\n<li>\u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u043d\u0430 \u0446\u0438\u0444\u0440\u0430<\/li>\n<li>\u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u0438\u043d \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b<\/li>\n<\/ul>\n<p>  <\/p>\n<p>\u042d\u0442\u0438 \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u043e\u0436\u043d\u043e \u043a\u043e\u043c\u0431\u0438\u043d\u0438\u0440\u043e\u0432\u0430\u0442\u044c. \u041f\u0435\u0440\u0435\u0432\u0435\u0434\u0435\u043c \u0438\u0445 \u043d\u0430 \u044f\u0437\u044b\u043a \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439:<\/p>\n<p>  <\/p>\n<pre><code class=\"plaintext\">{8,}                        \/\/ \u043e\u0442 8 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 {8,20}                      \/\/ \u043e\u0442 8 \u0434\u043e 20 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432 (?=.*\\d)                    \/\/ \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u043d\u0430 \u0446\u0438\u0444\u0440\u0430 (?=.*[a-z])                 \/\/ \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u043d\u0430 \u0431\u0443\u043a\u0432\u0430 \u0432 \u043d\u0438\u0436\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 (?=.*[A-Z])                 \/\/ \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u043d\u0430 \u0431\u0443\u043a\u0432\u0430 \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 (?=.*[-#!$@%^&amp;*_+~=:;?\\\/])  \/\/ \u043c\u0438\u043d\u0438\u043c\u0443\u043c \u043e\u0434\u0438\u043d \u0441\u0438\u043c\u0432\u043e\u043b \u0438\u0437 \u043d\u0430\u0431\u043e\u0440\u0430<\/code><\/pre>\n<p>  <\/p>\n<p>\u0424\u0443\u043d\u043a\u0446\u0438\u044f:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const password =   \/^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[-#!$@%^&amp;*_+~=:;?\\\/])[-\\w#!$@%^&amp;*+~=:;?\\\/]{8,}$\/  const isPassword = (str) =&gt; password.test(str)  \/\/ \u0431\u0443\u043a\u0432\u044b \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u0438 \u043d\u0438\u0436\u043d\u0435\u043c \u0440\u0435\u0433\u0438\u0441\u0442\u0440\u0435 console.log(isPassword('Password')) \/\/ false \/\/ + \u0447\u0438\u0441\u043b\u043e console.log(isPassword('Passw0rd')) \/\/ false \/\/ + \u0441\u043f\u0435\u0446\u0441\u0438\u043c\u0432\u043e\u043b, \u043d\u043e \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u0430\u044f \u0434\u043b\u0438\u043d\u0430 console.log(isPassword('Pas_w0r')) \/\/ false \/\/ ok console.log(isPassword('Pas$_W0rd')) \/\/ true<\/code><\/pre>\n<p>  <\/p>\n<p>\u041d\u0435 \u0437\u0430\u0431\u044b\u0432\u0430\u0439\u0442\u0435 \u043c\u043e\u0434\u0438\u0444\u0438\u0446\u0438\u0440\u043e\u0432\u0430\u0442\u044c <code>[-\\w#!$@%^&amp;*+~=:;?\\\/]<\/code> \u043f\u0440\u0438 \u0434\u043e\u0431\u0430\u0432\u043b\u0435\u043d\u0438\u0438\/\u0443\u0434\u0430\u043b\u0435\u043d\u0438\u0438 \u0433\u0440\u0443\u043f\u043f.<\/p>\n<p>  <\/p>\n<p><strong>\u041d\u043e\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u044b<\/strong><\/p>\n<p>  <\/p>\n<p>\u041d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a, \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043e\u0434\u0438\u043d \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u2014 <a href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%9B%D1%83%D0%BD%D0%B0\">\u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u041b\u0443\u043d\u0430<\/a>, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u043e\u0439 \u0446\u0438\u0444\u0440\u044b \u043d\u043e\u043c\u0435\u0440\u0430 \u043f\u043b\u0430\u0441\u0442\u0438\u043a\u043e\u0432\u043e\u0439 \u043a\u0430\u0440\u0442\u044b \u0432 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u0438 \u0441\u043e \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043e\u043c <code>ISO\/IEC 7812<\/code> \u0441 \u0446\u0435\u043b\u044c\u044e \u0435\u0435 (\u043d\u043e\u043c\u0435\u0440\u0430) \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0443\u043f\u0440\u043e\u0449\u0435\u043d\u043d\u043e\u043c \u0432\u0438\u0434\u0435 \u044d\u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442 \u0432\u043a\u043b\u044e\u0447\u0430\u0435\u0442 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0448\u0430\u0433\u0438:<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0426\u0438\u0444\u0440\u044b \u043f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c\u043e\u0439 \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u043d\u0443\u043c\u0435\u0440\u0443\u044e\u0442\u0441\u044f \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e.<\/li>\n<li>\u0426\u0438\u0444\u0440\u044b, \u043e\u043a\u0430\u0437\u0430\u0432\u0448\u0438\u0435\u0441\u044f \u043d\u0430 \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u043e\u0441\u0442\u0430\u044e\u0442\u0441\u044f \u0431\u0435\u0437 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0439.<\/li>\n<li>\u0426\u0438\u0444\u0440\u044b, \u0441\u0442\u043e\u044f\u0449\u0438\u0435 \u043d\u0430 \u0447\u0435\u0442\u043d\u044b\u0445 \u043c\u0435\u0441\u0442\u0430\u0445, \u0443\u043c\u043d\u043e\u0436\u0430\u044e\u0442\u0441\u044f \u043d\u0430 2.<\/li>\n<\/ol>\n<p>  <\/p>\n<p><em>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/em>: \u0440\u0435\u0447\u044c \u0438\u0434\u0435\u0442 \u043d\u0435 \u043e &quot;\u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438&quot; \u0447\u0438\u0441\u043b\u0430, \u0430 \u043e \u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438 \u0435\u0433\u043e \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435.<\/p>\n<p>  <\/p>\n<ol>\n<li>\u0415\u0441\u043b\u0438 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u0442\u0430\u043a\u043e\u0433\u043e \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u0435\u0442 \u0447\u0438\u0441\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 9, \u043e\u043d\u043e \u0437\u0430\u043c\u0435\u043d\u044f\u0435\u0442\u0441\u044f \u0441\u0443\u043c\u043c\u043e\u0439 \u0446\u0438\u0444\u0440 \u043f\u043e\u043b\u0443\u0447\u0438\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u044f \u2014 \u043e\u0434\u043d\u043e\u0437\u043d\u0430\u0447\u043d\u044b\u043c \u0447\u0438\u0441\u043b\u043e\u043c, \u0442\u043e \u0435\u0441\u0442\u044c \u0446\u0438\u0444\u0440\u043e\u0439.<\/li>\n<li>\u0412\u0441\u0435 \u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044b\u0435 \u0432 \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u0435 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0446\u0438\u0444\u0440\u044b \u0441\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u044e\u0442\u0441\u044f. \u0415\u0441\u043b\u0438 \u0441\u0443\u043c\u043c\u0430 \u043a\u0440\u0430\u0442\u043d\u0430 10, \u0442\u043e \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0434\u0430\u043d\u043d\u044b\u0435 \u0432\u0435\u0440\u043d\u044b.<\/li>\n<\/ol>\n<p>  <\/p>\n<p>\u0420\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044f \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430 \u0438\u0437 \u0412\u0438\u043a\u0438\u043f\u0435\u0434\u0438\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">function luhnAlgorithm(value) {   value = value.replace(\/\\D\/g, '')    \/\/ \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430   let nCheck = 0   \/\/ \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440 &quot;\u0447\u0435\u0442\u043d\u043e\u0441\u0442\u0438&quot; \u043f\u043e\u0437\u0438\u0446\u0438\u0438 \u0447\u0438\u0441\u043b\u0430   let bEven = false    \/\/ \u043f\u0435\u0440\u0435\u0431\u0438\u0440\u0430\u0435\u043c \u0447\u0438\u0441\u043b\u0430 \u0432 \u043e\u0431\u0440\u0430\u0442\u043d\u043e\u043c \u043f\u043e\u0440\u044f\u0434\u043a\u0435   for (let n = value.length - 1; n &gt;= 0; n--) {     \/\/ \u0438\u0437\u0432\u043b\u0435\u043a\u0430\u0435\u043c \u0447\u0438\u0441\u043b\u043e \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438     \/\/ \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u043f\u0435\u0440\u0432\u043e\u0433\u043e \u0438\u0437\u0432\u043b\u0435\u0447\u0435\u043d\u043d\u043e\u0433\u043e \u0447\u0438\u0441\u043b\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0435\u0447\u0435\u0442\u043d\u043e\u0439     let nDigit = parseInt(value.charAt(n), 10)      \/\/ \u0435\u0441\u043b\u0438 \u043f\u043e\u0437\u0438\u0446\u0438\u044f \u0447\u0438\u0441\u043b\u0430 \u0447\u0435\u0442\u043d\u0430\u044f \u0438 \u043f\u0440\u0438 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u0438 \u043d\u0430 2 \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 9,     \/\/ \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u043c \u0438\u0437 \u0447\u0438\u0441\u043b\u0430 9     \/\/ \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0431\u0443\u0434\u0435\u0442 \u0442\u0430\u043a\u0438\u043c \u0436\u0435, \u043a\u0430\u043a \u043f\u0440\u0438 \u0441\u043b\u043e\u0436\u0435\u043d\u0438\u0438 \u0446\u0438\u0444\u0440, \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0441\u043e\u0441\u0442\u043e\u0438\u0442 \u0447\u0438\u0441\u043b\u043e     \/\/ \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, `6 * 2 = 12`, `1 + 2 = 3` \u0438 `12 - 9 = 3`     if (bEven &amp;&amp; (nDigit *= 2) &gt; 9) {       nDigit -= 9     }      \/\/ \u043f\u0440\u0438\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0447\u0438\u0441\u043b\u043e \u043a \u0441\u0443\u043c\u043c\u0435     nCheck += nDigit     \/\/ \u0438\u043d\u0432\u0435\u0440\u0442\u0438\u0440\u0443\u0435\u043c \u0438\u043d\u0434\u0438\u043a\u0430\u0442\u043e\u0440     bEven = !bEven   }    \/\/ \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 10 \u0431\u0435\u0437 \u043e\u0441\u0442\u0430\u0442\u043a\u0430,   \/\/ \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u043e\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c   return nCheck % 10 == 0 }<\/code><\/pre>\n<p>  <\/p>\n<p><code>validator.js<\/code> \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u0435\u0442 \u0442\u0430\u043a\u043e\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 \u0440\u0430\u0441\u0441\u043c\u0430\u0442\u0440\u0438\u0432\u0430\u0435\u043c\u043e\u0433\u043e \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c\u0430:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const creditCard =   \/^(?:4[0-9]{12}(?:[0-9]{3,6})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12,15}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14})$\/  function isCreditCard(str) {   const sanitized = str.replace(\/[- ]+\/g, '')   if (!creditCard.test(sanitized)) {     return false   }   let sum = 0   let digit   let tmpNum   let shouldDouble   for (let i = sanitized.length - 1; i &gt;= 0; i--) {     digit = sanitized.substring(i, i + 1)     tmpNum = parseInt(digit, 10)     if (shouldDouble) {       tmpNum *= 2       if (tmpNum &gt;= 10) {         sum += (tmpNum % 10) + 1       } else {         sum += tmpNum       }     } else {       sum += tmpNum     }     shouldDouble = !shouldDouble   }   return !!(sum % 10 === 0 ? sanitized : false) }<\/code><\/pre>\n<p>  <\/p>\n<p>\u041f\u043e\u043f\u0440\u043e\u0431\u0443\u0435\u043c \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0442 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0432 \u043e\u0434\u043d\u0443 \u0441\u0442\u0440\u043e\u043a\u0443:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">\/\/ \u0444\u0443\u043d\u043a\u0446\u0438\u044f \u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u0442 \u0441\u0442\u0440\u043e\u043a\u0443 const isCreditCard = (str) =&gt;   \/\/ \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u043f\u0443\u0441\u0442\u043e\u0439   \/\/ \u043c\u043e\u0436\u043d\u043e \u0432\u043e\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u0448\u0435\u0439 \u0444\u0443\u043d\u043a\u0446\u0438\u0435\u0439 `!isEmpty()` \u0438\u043b\u0438   str.trim().length !== 0 &amp;&amp;   str     \/\/ \u0443\u0434\u0430\u043b\u044f\u0435\u043c \u0438\u0437 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432\u0441\u0435 \u041d\u0415 \u0447\u0438\u0441\u043b\u0430     .replace(\/\\D\/g, '')     \/\/ \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0441\u0442\u0440\u043e\u043a\u0443 \u0432 \u043c\u0430\u0441\u0441\u0438\u0432     .split('')     \/\/ \u043c\u0435\u043d\u044f\u0435\u043c \u043f\u043e\u0440\u044f\u0434\u043e\u043a \u0441\u043b\u0435\u0434\u043e\u0432\u0430\u043d\u0438\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u043e\u0432 \u043c\u0430\u0441\u0441\u0438\u0432\u0430 \u043d\u0430 \u043f\u0440\u043e\u0442\u0438\u0432\u043e\u043f\u043e\u043b\u043e\u0436\u043d\u044b\u0439     .reverse()     \/\/ s - \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430     \/\/ c - \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b \u0441\u0442\u0440\u043e\u043a\u0438, \u043d\u0430\u0447\u0438\u043d\u0430\u044f \u0441 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e     \/\/ i - \u0438\u043d\u0434\u0435\u043a\u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430     .reduce(       (s, c, i) =&gt;         (s +=           \/\/ \u0435\u0441\u043b\u0438 \u0438\u043d\u0434\u0435\u043a\u0441 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430 - \u043d\u0435\u0447\u0435\u0442\u043d\u043e\u0435 \u0447\u0438\u0441\u043b\u043e (1, 3 \u0438 \u0442.\u0434.),           \/\/ \u0437\u043d\u0430\u0447\u0438\u0442, \u0447\u0438\u0441\u043b\u043e \u043d\u0430\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u043d\u0430 \u0447\u0435\u0442\u043d\u043e\u0439 \u043f\u043e\u0437\u0438\u0446\u0438\u0438, \u0443\u043c\u043d\u043e\u0436\u0430\u0435\u043c \u0435\u0433\u043e \u043d\u0430 2           \/\/ \u0435\u0441\u043b\u0438 \u043f\u0440\u0438 \u044d\u0442\u043e\u043c \u0447\u0438\u0441\u043b\u043e \u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u0441\u044f \u0431\u043e\u043b\u044c\u0448\u0435 9, \u0432\u044b\u0447\u0438\u0442\u0430\u0435\u043c \u0438\u0437 \u043d\u0435\u0433\u043e 9           \/\/ \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u0443\u0435\u043c \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442 \u0432 \u0447\u0438\u0441\u043b\u043e \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e `+`           +(i % 2 !== 0 &amp;&amp; (c *= 2) &gt; 9 ? (c -= 9) : c)),       0) \/\/ \u043d\u0430\u0447\u0430\u043b\u044c\u043d\u0430\u044f \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430     \/\/ \u0435\u0441\u043b\u0438 \u043a\u043e\u043d\u0442\u0440\u043e\u043b\u044c\u043d\u0430\u044f \u0441\u0443\u043c\u043c\u0430 \u0434\u0435\u043b\u0438\u0442\u0441\u044f \u043d\u0430 10 \u0431\u0435\u0437 \u043e\u0441\u0442\u0430\u0442\u043a\u0430,     \/\/ \u0437\u043d\u0430\u0447\u0438\u0442, \u043d\u043e\u043c\u0435\u0440 \u043a\u0430\u0440\u0442\u044b \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u0430\u043b\u0438\u0434\u043d\u044b\u043c     % 10 === 0  console.log(isCreditCard('1234 5678 9009 8765')) \/\/ false console.log(isCreditCard('5555 5555 5555 4444')) \/\/ true<\/code><\/pre>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0432\u0438\u0434\u0438\u0442\u0435, \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u2014 \u0442\u0435\u043c\u0430, \u043a\u043e\u043d\u0435\u0447\u043d\u043e, \u0441\u043b\u043e\u0436\u043d\u0430\u044f, \u043d\u043e \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430\u044f \u0438 \u0447\u0440\u0435\u0437\u0432\u044b\u0447\u0430\u0439\u043d\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u0430\u044f. \u0420\u0435\u0434\u043a\u0438\u0439 \u043f\u0440\u043e\u0435\u043a\u0442 \u043e\u0431\u0445\u043e\u0434\u0438\u0442\u0441\u044f \u0431\u0435\u0437 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0447\u0438\u0441\u0442\u043a\u0438 \u0438\u043b\u0438 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445, \u0432\u0432\u043e\u0434\u0438\u043c\u044b\u0445 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u0435\u043c \u0438 (\u0432 \u043c\u0435\u043d\u044c\u0448\u0435\u0439 \u0441\u0442\u0435\u043f\u0435\u043d\u0438, \u043d\u043e \u0432\u0441\u0435 \u0436\u0435) &quot;\u043f\u0440\u0438\u043b\u0435\u0442\u0430\u044e\u0449\u0438\u0445&quot; \u0441 \u0441\u0435\u0440\u0432\u0435\u0440\u0430. \u0412\u043b\u0430\u0434\u0435\u043d\u0438\u0435 \u044f\u0437\u044b\u043a\u043e\u043c \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u043e\u0431\u043b\u0435\u0433\u0447\u0430\u0435\u0442 \u0440\u0435\u0448\u0435\u043d\u0438\u0435 \u043c\u043d\u043e\u0433\u0438\u0445 \u0437\u0430\u0434\u0430\u0447, \u0432\u043e\u0437\u043d\u0438\u043a\u0430\u044e\u0449\u0438\u0445 \u0432 \u0432\u0435\u0431-\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435.<\/p>\n<p>  <\/p>\n<p><em>\u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435<\/em>: \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u044e\u0442 \u0448\u0438\u0440\u043e\u043a\u0438\u0439 \u043f\u0440\u043e\u0441\u0442\u043e\u0440 \u0434\u043b\u044f \u0442\u0432\u043e\u0440\u0447\u0435\u0441\u0442\u0432\u0430, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u043f\u0440\u0438\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0435 \u0432 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0430\u0442\u0442\u0435\u0440\u043d\u044b \u043c\u043e\u0436\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u0442\u044c \u0441\u043e\u0432\u0435\u0440\u0448\u0435\u043d\u043d\u043e \u043f\u043e-\u0440\u0430\u0437\u043d\u043e\u043c\u0443, \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0432\u043e\u043f\u0440\u043e\u0441 \u0432 \u0442\u043e\u043c, \u0440\u0435\u0448\u0430\u0435\u0442 \u043b\u0438 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u0434 \u043d\u0435\u0439 \u0437\u0430\u0434\u0430\u0447\u0443 \u0438 \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0445\u043e\u0440\u043e\u0448\u043e \u043e\u043d\u0430 \u044d\u0442\u043e \u0434\u0435\u043b\u0430\u0435\u0442, \u0442.\u0435. \u043d\u0430\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0430 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0434\u0435\u0436\u043d\u043e\u0439 \u0438 \u043a\u0430\u043a \u0441\u0438\u043b\u044c\u043d\u043e \u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0432\u043b\u0438\u044f\u0435\u0442 \u043d\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c (\u0447\u0430\u0441\u0442\u043e \u044d\u0442\u043e \u0432\u043b\u0438\u044f\u043d\u0438\u0435 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f \u043a\u0440\u0438\u0442\u0438\u0447\u043d\u044b\u043c \u0434\u0430\u0436\u0435 \u0432 \u0441\u043b\u0443\u0447\u0430\u0435 \u0441 \u043f\u0440\u043e\u0441\u0442\u044b\u043c\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0430\u043c\u0438).<\/p>\n<p>  <\/p>\n<p>\u041f\u043e\u0434\u0431\u043e\u0440\u043a\u0430 \u0444\u0443\u043d\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438, \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043c\u044b \u0437\u0430\u043d\u0438\u043c\u0430\u043b\u0438\u0441\u044c \u043d\u0430 \u043f\u0440\u043e\u0442\u044f\u0436\u0435\u043d\u0438\u0438 \u0441\u0442\u0430\u0442\u044c\u0438:<\/p>\n<p>  <\/p>\n<pre><code class=\"javascript\">const isEmpty = (str) =&gt; !str.trim().length  const isBoolean = (str) =&gt; ['true', 'false', '1', '0'].indexOf(str) &gt; -1  const isAlpha = \/^[A-Z\u0410-\u042f\u0401]+$\/i.test(str)  const isAlphaNumeric = (str) =&gt; \/^[0-9A-Z\u0410-\u042f\u0401]+$\/i.test(str)  const numeric = (delimiter = '.') =&gt;   new RegExp(`^[+-]?([0-9]*\\\\${delimiter})?[0-9]+$`) const isNumeric = (str, delimiter) =&gt; numeric(delimiter).test(str)  const isPostalCode = (str) =&gt; \/^\\d{6}$\/.test(str)  const isPassportNumber = (str) =&gt; \/^\\d{10}$\/.test(str)  const isMobilePhone = (str) =&gt; \/^(\\+?7|8)?9\\d{9}$\/.test(str)  const isURL = (str) =&gt; \/https?:\\\/\\\/(www\\.)?[-\\w@:%\\.\\+~#=]{1,256}\\.[a-z0-9()]{1,6}\\b([-\\w()@:%\\.\\+~#=\/\/?&amp;]*)\/i.test(str)  const isEmail = (str) =&gt; \/^(([^&lt;&gt;()[\\]\\\\.,;:\\s@&quot;]+(\\.[^&lt;&gt;()[\\]\\\\.,;:\\s@&quot;]+)*)|(&quot;.+&quot;))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-z\\-0-9]+\\.)+[a-z]{2,}))$\/i.test(str)  const isStrongPassword = (str) =&gt; \/^(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[-#!$@%^&amp;*_+~=:;?\\\/])[-\\w#!$@%^&amp;*+~=:;?\\\/]{8,}$\/.test(str)  const isCreditCard = (str) =&gt;   str.trim().length !== 0 &amp;&amp;   str     .replace(\/\\D\/g, '')     .split('')     .reverse()     .reduce((s, c, i) =&gt;       (s += +(i % 2 !== 0 &amp;&amp; (c *= 2) &gt; 9 ? (c -= 9) : c)), 0) % 10 === 0<\/code><\/pre>\n<p>  <\/p>\n<p>\u042d\u0442\u043e \u0432\u0441\u0435, \u043e \u0447\u0435\u043c \u044f \u0445\u043e\u0442\u0435\u043b \u0432\u0430\u043c \u0441\u0435\u0433\u043e\u0434\u043d\u044f \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c. \u041f\u0440\u0438\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u044e\u0442\u0441\u044f \u043b\u044e\u0431\u044b\u0435 \u0437\u0430\u043c\u0435\u0447\u0430\u043d\u0438\u044f, \u0434\u043e\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u0438 \u043f\u0440\u0435\u0434\u043b\u043e\u0436\u0435\u043d\u0438\u044f.<\/p>\n<p>  <\/p>\n<hr>\n<p>  <\/p>\n<p><a href=\"https:\/\/macloud.ru\/vps-vds\">\u041a\u0443\u043f\u0438\u0442\u044c VPS-\u0445\u043e\u0441\u0442\u0438\u043d\u0433<\/a> \u0441 \u0431\u044b\u0441\u0442\u0440\u044b\u043c\u0438 NVM\u0435-\u0434\u0438\u0441\u043a\u0430\u043c\u0438 \u0438 \u043f\u043e\u0441\u0443\u0442\u043e\u0447\u043d\u043e\u0439 \u043e\u043f\u043b\u0430\u0442\u043e\u0439 \u0443 \u0445\u043e\u0441\u0442\u0438\u043d\u0433\u0430 \u041c\u0430\u043a\u043b\u0430\u0443\u0434.<\/p>\n<p>  <\/p>\n<p><a href=\"https:\/\/macloud.ru\/vps-vds&amp;utm_source=habr&amp;utm_medium=original&amp;utm_campaign=ilmar\"><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/gj\/zs\/hm\/gjzshmojh-bmnbzvfsre9se1eta.png\"><\/a><\/p>\n<\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/company\/macloud\/blog\/565726\/\"> https:\/\/habr.com\/ru\/company\/macloud\/blog\/565726\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html post__text_v1\" id=\"post-content-body\">\n<p><img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yk\/di\/iz\/ykdiizs6kxlkfcotid7rjjju4ri.jpeg\" alt=\"image\"><\/p>\n<p>  <\/p>\n<p>\u0420\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0435 (\u0434\u0430\u043b\u0435\u0435 \u0442\u0430\u043a\u0436\u0435 \u2014 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043a\u0430) \u2014 \u044d\u0442\u043e \u043f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u044c \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0445 \u0441\u0438\u043c\u0432\u043e\u043b\u043e\u0432, \u0444\u043e\u0440\u043c\u0438\u0440\u0443\u044e\u0449\u0438\u0445 \u043f\u0430\u0442\u0442\u0435\u0440\u043d \u0438\u043b\u0438 \u0448\u0430\u0431\u043b\u043e\u043d (pattern), \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0441\u043e \u0441\u0442\u0440\u043e\u043a\u043e\u0439.<\/p>\n<p>  <\/p>\n<p>\u0426\u0435\u043b\u044c \u0442\u0430\u043a\u043e\u0433\u043e \u0441\u043e\u043f\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0441\u0442\u043e\u044f\u0442\u044c \u043b\u0438\u0431\u043e \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435, \u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, \u0434\u043b\u044f \u0437\u0430\u043c\u0435\u043d\u044b \u043f\u043e\u0434\u0441\u0442\u0440\u043e\u043a\u0438, \u043b\u0438\u0431\u043e \u0432 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u0435\u043d\u0438\u0438 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u0441\u0442\u0440\u043e\u043a\u0438 \u0448\u0430\u0431\u043b\u043e\u043d\u0443 \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0441\u0442\u0440\u043e\u043a\u0438.<\/p>\n<p>  <\/p>\n<p>\u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0441\u043e\u0441\u0440\u0435\u0434\u043e\u0442\u043e\u0447\u0438\u043c\u0441\u044f \u043d\u0430 \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438.<\/p>\n<p>  <\/p>\n<p>\u0427\u0442\u043e \u043a\u043e\u043d\u043a\u0440\u0435\u0442\u043d\u043e \u043c\u044b \u0431\u0443\u0434\u0435\u043c \u0434\u0435\u043b\u0430\u0442\u044c? \u041c\u044b \u0432\u043e\u0437\u044c\u043c\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043e\u043a \u0438\u0437 <a href=\"https:\/\/github.com\/validatorjs\/validator.js\/\"><code>validator.js<\/code><\/a> (\u043d\u0430\u0438\u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u043f\u0443\u043b\u044f\u0440\u043d\u043e\u0439 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f \u0432\u0430\u043b\u0438\u0434\u0430\u0446\u0438\u0438 \u0434\u0430\u043d\u043d\u044b\u0445 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043d\u044b\u0445 \u0432\u044b\u0440\u0430\u0436\u0435\u043d\u0438\u0439) \u0438 \u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043c \u0438\u0445 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u044b\u0439 \u0440\u0430\u0437\u0431\u043e\u0440. \u0422\u0430\u043a\u0436\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0445 \u0440\u0435\u0433\u0443\u043b\u044f\u0440\u043e\u043a \u0438 \u043e\u0434\u0438\u043d \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c.<\/p>\n<p>  <\/p>\n<p>\u041a\u0430\u043a \u0440\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442, \u043c\u044b \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u043c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043f\u043e\u043b\u0435\u0437\u043d\u044b\u0445 \u0444\u0443\u043d\u043a\u0446\u0438\u0439, \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u0432\u044b \u0432\u043f\u043e\u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0438 \u0441\u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u0432 \u0441\u0432\u043e\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-325984","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/325984","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=325984"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/325984\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=325984"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=325984"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=325984"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}