{"id":1440,"date":"2012-01-25T03:00:24","date_gmt":"2012-01-25T11:00:24","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=1440"},"modified":"2013-05-05T21:05:30","modified_gmt":"2013-05-06T04:05:30","slug":"usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/","title":{"rendered":"Usando express\u00f5es regulares em aplica\u00e7\u00f5es FireMonkey com C++Builder"},"content":{"rendered":"<p>Vamos a outro exemplo em C++ onde demonstro como usar express\u00f5es regulares a partir da RTL em aplica\u00e7\u00f5es <a href=\"http:\/\/www.embarcadero.com\/products\/firemonkey\" target=\"_blank\">FireMonkey<\/a> e <a href=\"http:\/\/www.embarcadero.com\/products\/cbuilder\" target=\"_blank\">C++Builder<\/a>.<\/p>\n<p>Este exemplo demonstra como validar um conte\u00fado a partir de uma string em quatro diferentes express\u00f5es regulares, que s\u00e3o:<\/p>\n<ul>\n<li>Validar se a string enviada cont\u00e9m um endere\u00e7o de e-mail<\/li>\n<li>Validar se a string enviada cont\u00e9m um endere\u00e7o de IP v\u00e1lido<\/li>\n<li>Validar se a string enviada est\u00e1 no formato dd-mm-yyyy<\/li>\n<li>Validar se a string enviada est\u00e1 no formato mm-dd-yyyy<\/li>\n<\/ul>\n<p>O c\u00f3digo a seguir mostra as quatro express\u00f5es regulares usadas por essa aplica\u00e7\u00e3o.<\/p>\n<pre class=\"brush: cpp\">void __fastcall TForm1::lbRegExpChange(TObject *Sender) {\r\n\tswitch (lbRegExp-&gt;ItemIndex) {\r\n\tcase 0:\r\n\t\tlbType-&gt;Text = \"E-mail for validation\";\r\n\r\n\t\tMemoRegEx-&gt;Text =\r\n\t\t\t\"^((?&gt;[a-zA-Z\\d!#$%&amp;''*+\\\\-\/=?^_`{|}~]+\\\\x20*\" \"|\\\"((?=[\\\\x01-\\\\x7f])[^\\\"\\\\\\\\]|\\\\\\\\[\\\\x01-\\\\x7f])*\\\"\\\\\"\r\n\t\t\t\"x20*)*(?\\.?[a-zA-Z\\d!\" \"#$%&amp;''*+\\\\-\/=?^_`{|}~]+)+|\\\"\\\"((?=[\\\\x01-\\\\x7f])\"\r\n\t\t\t\"[^\\\"\\\\\\\\]|\\\\\\\\[\\\\x01-\\\\x7f])*\\\")@(((?!-)[a-zA-Z\\\\d\\\\\" \"-]+(?)$\";\r\n\r\n\t\tbreak;\r\n\tcase 1: {\r\n\t\t\t\/\/ Accept IP address between 0..255\r\n\t\t\tlbType-&gt;Text = \"IP address for validation (0..255)\";\r\n\t\t\tMemoRegEx-&gt;Text =\r\n\t\t\t\t\"\\\\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\\" \".(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.\"\r\n\t\t\t\t\"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\.\" \"(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\\\b\";\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\tcase 2: {\r\n\t\t\t\/\/ Data interval format mm-dd-yyyy\r\n\t\t\tlbType-&gt;Text =\r\n\t\t\t\t\"Date in mm-dd-yyyy format from between 01-01-1900 and 12-31-2099\";\r\n\t\t\tMemoRegEx-&gt;Text =\r\n\t\t\t\t\"^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[\" \"01])[- \/.](19|20)\\\\d\\\\d$\";\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\tcase 3: {\r\n\t\t\t\/\/ Data interval format mm-dd-yyyy\r\n\t\t\tlbType-&gt;Text =\r\n\t\t\t\t\"Date in dd-mm-yyyy format from between 01-01-1900 and 31-12-2099\";\r\n\t\t\tMemoRegEx-&gt;Text =\r\n\t\t\t\t\"^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[01\" \"2])[- \/.](19|20)\\\\d\\\\d$\";\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\t}\r\n\tEditTextChangeTracking(EditText);\r\n\r\n}<\/pre>\n<p>Para executar a valida\u00e7\u00e3o, utilizamos o m\u00e9todo TRegExp::IsMatch como demonstrado a seguir:<br \/>\nTo execute the validation you can use the method TRegExp::IsMatch as you can see bellow:<\/p>\n<pre class=\"brush: cpp\">void __fastcall TForm1::EditTextChangeTracking(TObject *Sender) {\r\n       \/\/ EditText contain the string value and MemoRegEx the regular expression\r\n\tif (TRegEx::IsMatch(EditText-&gt;Text, MemoRegEx-&gt;Text)) {\r\n\t\tSEResult-&gt;ShadowColor = TAlphaColors::Green;\r\n\t}\r\n\telse\r\n\t\tSEResult-&gt;ShadowColor = TAlphaColors::Red;\r\n\r\n}<\/pre>\n<p>Uma vez que este \u00e9 um aplicativo FireMonkey, utilizei o efeito de sombra para demonstrar ao usu\u00e1rio se o valor informado no Edit \u00e9 v\u00e1lido ou n\u00e3o (Verde = v\u00e1lido \/ Vermelho = inv\u00e1lido). A seguinte imagem demonstra o que ir\u00e1 acontecer caso o usu\u00e1rio informe um endere\u00e7o de e-mail inv\u00e1lido no Windows e Mac.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2012\/01\/CBuilderRegExpinAction.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-769\" title=\"Reg Expression no Windows e Mac\" alt=\"\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2012\/01\/CBuilderRegExpinAction.png\" width=\"373\" height=\"386\" \/><\/a><\/p>\n<p>Abaixo o resultado quando o usu\u00e1rio informar o endere\u00e7o de e-mail v\u00e1lido.<\/p>\n<p style=\"text-align: center;\"><a href=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2012\/01\/CBuilderRegExpinAction-green.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter  wp-image-770\" title=\"Express\u00e3o regular em a\u00e7\u00e3o no C++Builder\" alt=\"\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2012\/01\/CBuilderRegExpinAction-green.png\" width=\"373\" height=\"386\" \/><\/a><\/p>\n<p>Voc\u00ea pode baixar o c\u00f3digo fonte \u00a0<strong><a href=\"https:\/\/radstudiodemos.svn.sourceforge.net\/svnroot\/radstudiodemos\/branches\/RadStudio_XE2\/CPP\/RTL\/RegExpression\/\" target=\"_blank\">aqui<\/a><\/strong>\u00a0ou atualizar a pasta de exemplos local do seu RAD Studio XE2 a partir do <a href=\"http:\/\/radstudiodemos.svn.sourceforge.net\/radstudiodemos\/\" target=\"_blank\">reposit\u00f3rio do RAD Studio XE2 no SVN<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vamos a outro exemplo em C++ onde demonstro como usar express\u00f5es regulares a partir da RTL em aplica\u00e7\u00f5es FireMonkey e C++Builder. Este exemplo demonstra como validar um conte\u00fado a partir de uma string em quatro diferentes express\u00f5es regulares, que s\u00e3o: Validar se a string enviada cont\u00e9m um endere\u00e7o de e-mail Validar se a string enviada [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4232,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"yes","footnotes":""},"categories":[16,186],"tags":[173,115],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Usando express\u00f5es regulares em aplica\u00e7\u00f5es FireMonkey com C++Builder | Andreano Lanusse | Tecnologia e Desenvolvimento de Software<\/title>\n<meta name=\"description\" content=\"Vamos a outro exemplo em C++ onde demonstro como usar express\u00f5es regulares a partir da RTL em aplica\u00e7\u00f5es FireMonkey e C++Builder. Este exemplo demonstra\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Usando express\u00f5es regulares em aplica\u00e7\u00f5es FireMonkey com C++Builder | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"og:description\" content=\"Vamos a outro exemplo em C++ onde demonstro como usar express\u00f5es regulares a partir da RTL em aplica\u00e7\u00f5es FireMonkey e C++Builder. Este exemplo demonstra\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2012-01-25T11:00:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-05-06T04:05:30+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/09\/Icon_CBuilder.png\" \/>\n\t<meta property=\"og:image:width\" content=\"172\" \/>\n\t<meta property=\"og:image:height\" content=\"169\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"2 minutos\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/09\/Icon_CBuilder.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/09\/Icon_CBuilder.png\",\"width\":172,\"height\":169},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/\",\"name\":\"Usando express\\u00f5es regulares em aplica\\u00e7\\u00f5es FireMonkey com C++Builder | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#primaryimage\"},\"datePublished\":\"2012-01-25T11:00:24+00:00\",\"dateModified\":\"2013-05-06T04:05:30+00:00\",\"description\":\"Vamos a outro exemplo em C++ onde demonstro como usar express\\u00f5es regulares a partir da RTL em aplica\\u00e7\\u00f5es FireMonkey e C++Builder. Este exemplo demonstra\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"Usando express\\u00f5es regulares em aplica\\u00e7\\u00f5es FireMonkey com C++Builder\",\"datePublished\":\"2012-01-25T11:00:24+00:00\",\"dateModified\":\"2013-05-06T04:05:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#webpage\"},\"commentCount\":3,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#primaryimage\"},\"keywords\":[\"C++Builder\",\"FireMonkey\"],\"articleSection\":[\"C++Builder\",\"FireMonkey\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/usando-expressoes-regulares-em-aplicacoes-firemonkey-com-cbuilder\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/1440"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=1440"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/1440\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media\/4232"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=1440"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=1440"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=1440"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}