PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → WX - Expressão Regular - Mascaras - Validação de Campo - Picture
WX - Expressão Regular - Mascaras - Validação de Campo - Picture
Iniciado por BOLLER, dez., 26 2016 11:05 AM - 5 respostas
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 26 2016 - 11:05 AM
Prezados,

Segue exemplos de como usar Expressão Regular - Mascaras - Validação de Campo - Picture

E o que é Expressão Regular?

Em ciência da computação, uma expressão regular (ou o estrangeirismo regex, abreviação do inglês regular expression) provê uma forma concisa e flexível de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padrões de caracteres. Expressões regulares são escritas numa linguagem formal que pode ser interpretada por um processador de expressão regular, um programa que serve um gerador de analisador sintático ou examina o texto e identifica as partes que casam com a especificação dada.

O termo deriva do trabalho do matemático norte-americano Stephen Cole Kleene, que desenvolveu as expressões regulares como uma notação ao que ele chamava de álgebra de conjuntos regulares. Seu trabalho serviu de base para os primeiros algoritmos computacionais de busca, e depois para algumas das mais antigas ferramentas de tratamento de texto da plataforma Unix.

O uso atual de expressões regulares inclui procura e substituição de texto em editores de texto e linguagens de programação, validação de formatos de texto (validação de protocolos ou formatos digitais), realce de sintaxe e filtragem de informação.

Maiores informações
https://pt.wikipedia.org/wiki/Express%C3%A3o_regular
http://turing.com.br/material/regex/introducao.html
https://msdn.microsoft.com/pt-br/library/az24scfc(v=vs.110).aspx





:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, dezembro, 26 2016 - 11:06 AM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 05 2019 - 2:51 PM
Expressão regular (REGEXP): Exemplo de campo texto que só recebe números e ponto

Edt_Campo..InputMask = "regexp:[0-9]{0,9}[.]{0,1}[0-9]{0,9}"

O campo vai receber valores iguais a 0123456789.0123456789
10 números inteiros até 10 casas decimais usando ponto como valor decimal

Edt_Campo..InputMask = "regexp:[0-9]{0,9}[.]{0,1}[0-9]{0,2}"

O campo vai receber valores iguais a 0123456789.01
10 números inteiros até 2 casas decimais usando ponto como valor decimal

IMPORTANTE: Use o evento "Whenever modifying" / "Sempre que modificar", assim cada caracter que for digitado imediatamente valida o campo.

Edt_Campo..InputMask = "regexp:[0-5]{0,5}[.]{0,1}[0-9]{0,2}"

O campo vai receber valores iguais a 012345.01
6 números inteiros com até 2 casas decimais usando ponto como valor decimal

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 05 2019 - 3:48 PM
Detalhe importante de reposicionar o cursor para o final da linha enquanto valida a máscara:
Exemplo:

EDT_VALOR_MAXIMO_RESPOSTA..InputMask = "regexp:[0-9]{0,9}[.]{0,1}[0-9]{0,9}"
EDT_VALOR_MAXIMO_RESPOSTA..CursorEnd = Length (EDT_VALOR_MAXIMO_RESPOSTA) + 1
EDT_VALOR_MAXIMO_RESPOSTA..Cursor = EDT_VALOR_MAXIMO_RESPOSTA..CursorEnd


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, dezembro, 05 2019 - 3:48 PM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 05 2019 - 9:52 PM
SYNTAX REGEXP

\ Indica que o próximo caractere é um caractere específico. Por exemplo, \ n indica um avanço de linha. Esse personagem também permite que você use um personagem sem considerá-lo como um meta caractere (por exemplo: "\\" indica que "\" é o personagem procurado)

* Indica que a sequência de caracteres que precede esse símbolo pode aparecer 0 ou várias vezes. O símbolo * é equivalente a {0,}.

+ Indica que a sequência de caracteres que precede este símbolo pode aparecer 1 vez ou várias vezes. O símbolo + é equivalente a {1,}.

? Indica que a sequência de caracteres que precede esse símbolo pode aparecer 0 ou uma vez. O? símbolo é equivalente a {0, 1}.

. Indica que a sequência de caracteres que precede esse símbolo pode ser qualquer caractere, exceto um salto de linha.

Indica que a sequência de caracteres pode corresponder ao modelo OR ao modelo.

{} Indica que a sequência de caracteres que precede esse símbolo pode aparecer várias vezes.

{,} Indica que a sequência de caracteres que precede esse símbolo pode aparecer vezes ou mais que vezes.

{,} Indica que a sequência de caracteres que precede esse símbolo pode aparecer entre e as horas.

[abc] Indica que a sequência de caracteres deve ser 'abc'.

[015] Indica que a sequência de caracteres deve ser '015'.

[a-z] Indica que o caractere deve ser incluído entre 'a' e 'z'.

[A-Z] Indica que o caractere deve ser incluído entre 'A' e 'Z'.

[0-9] Indica que o caractere deve ser um dígito incluído entre '0' e '9'.

... Vários outros meta caracteres estão disponíveis. Você pode encontrar as seqüências solicitadas na Internet (palavras-chave "exemplo de expressão regular").




\ Indicates that the next character is a specific character. For instance, \n indicates a line feed. This character also enables you to use a character without considering it as a meta character (for example: "\\" indicates that "\" is the sought character)

* Indicates that the sequence of characters preceding this symbol can appear 0 time or several times. The * symbol is equivalent to {0, }.

+ Indicates that the sequence of characters preceding this symbol can appear 1 time or several times. The + symbol is equivalent to {1, }.

? Indicates that the sequence of characters preceding this symbol can appear 0 time or one time. The? symbol is equivalent to {0, 1}.

. Indicates that the sequence of characters preceding this symbol can be any character except for a line skip.

| Indicates that the sequence of characters may correspond to model OR to model .

{} Indicates that the sequence of characters preceding this symbol can appear times.

{,} Indicates that the sequence of characters preceding this symbol can appear times or more than times.

{,} Indicates that the sequence of characters preceding this symbol can appear between and times.

[abc] Indicates that the sequence of characters must be 'abc'.

[015] Indicates that the sequence of characters must be '015'.

[a-z] Indicates that the character must be included between 'a' and 'z'.

[A-Z] Indicates that the character must be included between 'A' and 'Z'.

[0-9] Indicates that the character must be a digit included between '0' and '9'.

... Several other meta characters are available. You may find the requested sequences on Internet ("example regular expression" keywords).


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, dezembro, 05 2019 - 9:53 PM
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em dezembro, 05 2019 - 9:52 PM




--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.651 mensagems
Popularité : +175 (223 votes)
Publicado em janeiro, 02 2020 - 3:09 PM
Para colocar o cursor no final da linha sempre

EDT_VALOR_MAXIMO_RESPOSTA..CursorEnd = Length (EDT_VALOR_MAXIMO_RESPOSTA) + 1
EDT_VALOR_MAXIMO_RESPOSTA..Cursor = EDT_VALOR_MAXIMO_RESPOSTA..CursorEnd


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/