Usando expressões regulares em aplicações FireMonkey com C++Builder
Vamos a outro exemplo em C++ onde demonstro como usar expressões regulares a partir da RTL em aplicações FireMonkey e C++Builder.
Este exemplo demonstra como validar um conteúdo a partir de uma string em quatro diferentes expressões regulares, que são:
- Validar se a string enviada contém um endereço de e-mail
- Validar se a string enviada contém um endereço de IP válido
- Validar se a string enviada está no formato dd-mm-yyyy
- Validar se a string enviada está no formato mm-dd-yyyy
O código a seguir mostra as quatro expressões regulares usadas por essa aplicação.
void __fastcall TForm1::lbRegExpChange(TObject *Sender) { switch (lbRegExp->ItemIndex) { case 0: lbType->Text = "E-mail for validation"; MemoRegEx->Text = "^((?>[a-zA-Z\d!#$%&''*+\\-/=?^_`{|}~]+\\x20*" "|\"((?=[\\x01-\\x7f])[^\"\\\\]|\\\\[\\x01-\\x7f])*\"\\" "x20*)*(?\.?[a-zA-Z\d!" "#$%&''*+\\-/=?^_`{|}~]+)+|\"\"((?=[\\x01-\\x7f])" "[^\"\\\\]|\\\\[\\x01-\\x7f])*\")@(((?!-)[a-zA-Z\\d\\" "-]+(?)$"; break; case 1: { // Accept IP address between 0..255 lbType->Text = "IP address for validation (0..255)"; MemoRegEx->Text = "\\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]?)\\." "(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"; break; } case 2: { // Data interval format mm-dd-yyyy lbType->Text = "Date in mm-dd-yyyy format from between 01-01-1900 and 12-31-2099"; MemoRegEx->Text = "^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[" "01])[- /.](19|20)\\d\\d$"; break; } case 3: { // Data interval format mm-dd-yyyy lbType->Text = "Date in dd-mm-yyyy format from between 01-01-1900 and 31-12-2099"; MemoRegEx->Text = "^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[01" "2])[- /.](19|20)\\d\\d$"; break; } } EditTextChangeTracking(EditText); }
Para executar a validação, utilizamos o método TRegExp::IsMatch como demonstrado a seguir:
To execute the validation you can use the method TRegExp::IsMatch as you can see bellow:
void __fastcall TForm1::EditTextChangeTracking(TObject *Sender) { // EditText contain the string value and MemoRegEx the regular expression if (TRegEx::IsMatch(EditText->Text, MemoRegEx->Text)) { SEResult->ShadowColor = TAlphaColors::Green; } else SEResult->ShadowColor = TAlphaColors::Red; }
Uma vez que este é um aplicativo FireMonkey, utilizei o efeito de sombra para demonstrar ao usuário se o valor informado no Edit é válido ou não (Verde = válido / Vermelho = inválido). A seguinte imagem demonstra o que irá acontecer caso o usuário informe um endereço de e-mail inválido no Windows e Mac.
Abaixo o resultado quando o usuário informar o endereço de e-mail válido.
Você pode baixar o código fonte aqui ou atualizar a pasta de exemplos local do seu RAD Studio XE2 a partir do repositório do RAD Studio XE2 no SVN.
quando vmos ter o delphi com multiportabilidade
delphi para o linux