Os formulários do MyDocSafe suportam expressões regulares.
O que são expressões regulares e como utilizá-las?
Uma expressão regular, ou regex, é um padrão que descreve uma determinada sequência de texto. Por exemplo, para garantir que a pessoa que preenche um formulário introduz exatamente o texto pretendido, pode utilizar uma expressão regular para impor um determinado padrão de entrada ou validar os dados.
Por exemplo, suponha que pretende solicitar um Número de Seguro Nacional do Reino Unido (NIN). O seu padrão consiste em 2 caracteres, seguidos de 6 dígitos e de outro carácter. Uma expressão regular correspondente a este padrão seria:
[a-z|A-Z]{2}[0-9]{6}[a-z|A-Z]
Aqui, [a-z] significa "qualquer carácter minúsculo", [A-Z] significa "qualquer carácter maiúsculo", | significa ou, pelo que [a-z|A-Z] significa "qualquer carácter", {2} significa "repetir duas vezes", etc.
Alguns governos disponibilizam expressões regulares para padrões de utilização frequente. Por exemplo, consulte este artigo da Wikipedia sobre os códigos postais do Reino Unido.
Para uma referência rápida sobre expressões regulares, pesquise por um 'Guia de expressões regulares' ou continue a ler.
Carácter | Legenda | Exemplo | Exemplo de correspondência |
\d | Na maioria dos motores: um dígito | file_\d\d | file_25 |
\d | .NET, Python 3: um dígito Unicode em qualquer sistema de escrita | file_\d\d | file_9੩ |
\w | Na maioria dos motores: "carácter de palavra": letra ASCII, dígito ou sublinhado | \w-\w\w\w | A-b_1 |
\w | .Python 3: "carácter de palavra": letra Unicode, ideograma, dígito ou sublinhado | \w-\w\w\w | 字-ま_۳ |
\w | .NET: "carácter de palavra": letra Unicode, ideograma, dígito ou conector | \w-\w\w\w | 字-ま‿۳ |
\s | Na maioria dos motores: "carácter de espaço em branco": espaço, tabulação, nova linha, retorno de carro, tabulação vertical | a\sb\sc | a b |
\s | .NET, Python 3, JavaScript: "carácter de espaço em branco": qualquer separador Unicode | a\sb\sc | a b |
\D | Um carácter que não é um dígito, conforme definido por \d no motor utilizado | \D\D\D | ABC |
\W | Um carácter que não é um carácter de palavra, conforme definido por \w no motor utilizado | \W\W\W\W\W | *-+=) |
\S | Um carácter que não é um carácter de espaço em branco, conforme definido por \s no motor utilizado | \S\S\S\S | Yoyo |
Quantificadores
Quantificador | Legenda | Exemplo | Exemplo de correspondência |
+ | Uma ou mais vezes | Version \w-\w+ | Version A-b1_1 |
{3} | Exatamente três vezes | \D{3} | ABC |
{2,4} | Duas a quatro vezes | \d{2,4} | 156 |
{3,} | Três ou mais vezes | \w{3,} | regex_tutorial |
* | Zero ou mais vezes | A*B*C* | AAACC |
? | Uma vez ou nenhuma | plurals? | plural |
Mais caracteres
Carácter | Legenda | Exemplo | Exemplo de correspondência |
. | Qualquer carácter exceto uma quebra de linha | a.c | abc |
. | Qualquer carácter exceto uma quebra de linha | .* | whatever, man. |
\. | Um ponto (carácter especial: tem de ser precedido por \ para ser tratado como literal) | a\.c | a.c |
\ | Permite tratar um carácter especial como literal | \.\*\+\? \$\^\/\\ | .*+? $^/\ |
\ | Permite tratar um carácter especial como literal | \[\{\(\)\}\] | [{()}] |
Lógica
Lógica | Legenda | Exemplo | Exemplo de correspondência |
| | Alternância / operando OU | 22|33 | 33 |
( … ) | Grupo de captura | A(nt|pple) | Apple (captura "pple") |
\1 | Conteúdo do Grupo 1 | r(\w)g\1x | regex |
\2 | Conteúdo do Grupo 2 | (\d\d)\+(\d\d)=\2\+\1 | 12+65=65+12 |
(?: … ) | Grupo sem captura | A(?:nt|pple) | Apple |
Mais caracteres de espaço em branco
Carácter | Legenda | Exemplo | Exemplo de correspondência |
\t | Tabulação | T\t\w{2} | T ab |
\r | Carácter de retorno de carro | ver abaixo |
|
\n | Carácter de avanço de linha | ver abaixo |
|
\r\n | Separador de linhas no Windows | AB\r\nCD | AB |
\N | Perl, PCRE (C, PHP, R…): um carácter que não é uma quebra de linha | \N+ | ABC |
\h | Perl, PCRE (C, PHP, R…), Java: um carácter de espaço em branco horizontal: tabulação ou separador de espaço Unicode |
|
|
\H | Um carácter que não é um espaço em branco horizontal |
|
|
\v | .NET, JavaScript, Python, Ruby: tabulação vertical |
|
|
\v | Perl, PCRE (C, PHP, R…), Java: um carácter de espaço em branco vertical: avanço de linha, retorno de carro, tabulação vertical, avanço de página, separador de parágrafo ou de linha |
|
|
\V | Perl, PCRE (C, PHP, R…), Java: qualquer carácter que não é um espaço em branco vertical |
|
|
\R | Perl, PCRE (C, PHP, R…), Java: uma quebra de linha (o par retorno de carro + avanço de linha e todos os caracteres que correspondem a \v) |
|
|
Mais quantificadores
Quantificador | Legenda | Exemplo | Exemplo de correspondência |
+ | O + (uma ou mais vezes) é "guloso" | \d+ | 12345 |
? | Torna os quantificadores "preguiçosos" | \d+? | 1 em 12345 |
* | O * (zero ou mais vezes) é "guloso" | A* | AAA |
? | Torna os quantificadores "preguiçosos" | A*? | vazio em AAA |
{2,4} | Duas a quatro vezes, "guloso" | \w{2,4} | abcd |
? | Torna os quantificadores "preguiçosos" | \w{2,4}? | ab em abcd |
Classes de caracteres
Carácter | Legenda | Exemplo | Exemplo de correspondência |
[ … ] | Um dos caracteres entre parênteses retos | [AEIOU] | Uma vogal maiúscula |
[ … ] | Um dos caracteres entre parênteses retos | T[ao]p | Tap ou Top |
- | Indicador de intervalo | [a-z] | Uma letra minúscula |
[x-y] | Um dos caracteres no intervalo de x a y | [A-Z]+ | GREAT |
[ … ] | Um dos caracteres entre parênteses retos | [AB1-5w-z] | Um dos seguintes: A,B,1,2,3,4,5,w,x,y,z |
[x-y] | Um dos caracteres no intervalo de x a y | [ -~]+ | Caracteres na secção imprimível da tabela ASCII. |
[^x] | Um carácter que não é x | [^a-z]{3} | A1! |
[^x-y] | Um dos caracteres que não pertencem ao intervalo de x a y | [^ -~]+ | Caracteres que não estão na secção imprimível da tabela ASCII. |
[\d\D] | Um carácter que é um dígito ou um carácter não numérico | [\d\D]+ | Quaisquer caracteres, incluindo |
[\x41] | Corresponde ao carácter na posição hexadecimal 41 da tabela ASCII, ou seja, A | [\x41-\x45]{3} | ABE |
Âncoras e limites
Âncora | Legenda | Exemplo | Exemplo de correspondência |
^ | Início da cadeia de caracteres ou início da linha, consoante o modo multilinha. (Mas, quando está [^dentro de parênteses retos], significa "não") | ^abc .* | abc (início da linha) |
$ | Fim da cadeia de caracteres ou fim da linha, consoante o modo multilinha. Existem muitas particularidades que dependem do motor. | .*? the end$ | this is the end |
\A | Início da cadeia de caracteres | \Aabc[\d\D]* | abc (início... |
\z | Fim absoluto da cadeia de caracteres | the end\z | this is...\n...the end |
\Z | Fim da cadeia de caracteres ou (exceto em Python) antes da última quebra de linha | the end\Z | this is...\n...the end\n |
\G | Início da cadeia de caracteres ou fim da correspondência anterior |
|
|
\b | Limite de palavra | Bob.*\bcat\b | Bob ate the cat |
\b | Limite de palavra | Bob.*\b\кошка\b | Bob ate the кошка |
\B | c.*\Bcat\B.* | copycats |
