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