x

Capítulos principais

  1. LimeSurvey Cloud vs LimeSurvey CE
  2. Guia de início rápido - LimeSurvey 3.0+
  3. Instalação - LimeSurvey CE
  4. Como criar um bom inquérito (guia)
  5. Começando
  6. Administração do LimeSurvey
  7. Inquéritos - introdução
  8. Configurações do inquérito
  9. Menu de inquérito
  10. Estrutura do inquérito
  11. Perguntas - introdução
  12. Grupos de perguntas - introdução
  13. Pesquisas - gestão
  14. Opções da barra de ferramentas do inquérito
  15. Inquérito multilingue
  16. ExpressionScript Engine - Guia de início rápido
  17. Recursos não categorizados e avançados
  18. Perguntas frequentes gerais
  19. Resolução de problemas
  20. Soluções alternativas
  21. Licença
  22. Registo de alterações das versões
  23. Plugins
 Actions

Utilização de expressões regulares

From LimeSurvey Manual

Esta página pode ter sido traduzida automaticamente e conter erros. Ver o original em inglês · Melhorar esta tradução
This page is a translated version of the page Using regular expressions and the translation is 100% complete.

As expressões regulares têm de começar e terminar com uma barra ("/"). Pode encontrar uma boa biblioteca de expressões regulares em https://www.regexlib.net/. Estes padrões funcionam quase sempre se estiverem rodeados por barras.

Para testar a sua expressão regular, pode utilizar este testador de expressões regulares.

Para melhorar esta secção da wiki, pedimos-lhe que adicione as suas expressões regulares testadas com sucesso, de forma a proporcionar uma melhor compreensão desta funcionalidade aos novos utilizadores (potenciais) do LimeSurvey.
  Atenção : Tenha em atenção que todos os exemplos abaixo estão escritos numa só linha!



Importante: expressões regulares em condições

Tenha em atenção que, ao utilizar expressões regulares no editor de condições, NÃO deve incluir a barra inicial e final.


Validação de email

Atualização (12/2018): Atualmente, os nomes de domínio não só podem conter caracteres especiais como “ü”, como também podem ter mais de 3 caracteres na extensão, como .tech ou .company. Por isso, a expressão regular de email abaixo apenas verifica se “@” e “.” existem no endereço de email introduzido.

/^.+?@.+?\..+$/

Se quiser validar um endereço por linha, num campo de texto longo com várias linhas:

/^(((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*(\r\n)?\n?)+)*)$/

Nesta expressão regular desatualizada, o nome de domínio está limitado a 3 caracteres, o que não abrange todos os domínios disponíveis:

/^(\w[-._+\w]*\w@\w[-._\w]*\w\.\w{2,3})$/

Códigos postais

Códigos postais australianos:

/^[0-9]{4}/

Códigos postais brasileiros

/^[0-9]{2}\.[0-9]{3}-[0-9]{3}$/

Códigos postais canadianos

/^[a-zA-Z]\d{1}[a-zA-Z](\-| |)\d{1}[a-zA-Z]\d{1}$/

Códigos postais dos EUA

/^[0-9]{5}([- /]?[0-9]{4})?$/

Para que o código postal comece por zero, utilize:

/^[0-9]{5}(?:-[0-9]{4})?$/

Códigos postais do Reino Unido

/^[A-Z][A-Z]?[0-9][A-Z0-9]? ?[0-9][ABDEFGHJLNPQRSTUWXYZ]{2}$/i

Tenha em atenção que esta expressão não é muito exata e que uma validação mais exata é muito mais complexa. Por exemplo, consulte a resposta no StackOverflow e a Wikipédia para obter mais informações.

Códigos postais franceses

/(^[0-8]\d\d{3}$)|(^9[0-5]\d{3}$)|(^97[1-6]\d{2}$)|(^98[46-8]\d{2}$)/

A expressão acima é muito precisa e verifica se o departamento francês existe (primeiros dois dígitos), incluindo os departamentos e territórios ultramarinos (DOM-TOM).


Números de telefone

Números de telefone dos EUA

/^(?:\([2-9]\d{2}\)\ ?|[2-9]\d{2}(?:\-?|\ ?))[2-9]\d{2}[- ]?\d{4}$/

ou

/^[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{3}[\(\)\.\- ]{0,}[0-9]{4}[\(\)\.\- ]{0,}$/

Esta segunda opção corresponde a todos os números de telefone canadianos e dos EUA que incluem símbolos não numéricos, nomeadamente:

 . ( ) - (space)

Isto permite-lhe validar números de telefone semelhantes aos seguintes:

  • (555)555 5555
  • 555.555.5555
  • 555 555 5555
  • (555)-555-5555
  • 555-555-5555
  • 555555555

Números de telefone australianos

Os seguintes padrões correspondem a todos os tipos de números de telemóvel e de telefone fixo australianos, incluindo com o prefixo de país "+61":

  • (02) 9123 6535
  • 03 1234-5345
  • 0412 345 678
  • +61 2 3456 789

Mas não:

  • 234 3450 234
  • a234 534 3432
  • 134567
  • 123456789013

Os parênteses, espaços em branco e hífenes são ignorados.

As versões 'Muito preciso:' aqui listadas verificam os primeiros quatro ou cinco dígitos de um número para garantir que são números australianos válidos.

As versões 'Pouco preciso:' verificam apenas o primeiro e o segundo dígitos, pelo que podem permitir números inválidos.

Todos os números de telefone australianos (telemóvel e fixo - indicativo obrigatório)

Muito preciso:

/^\(?(?:\+?61|0)(?:(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}|4\)?[ -]?(?:(?:[01][ -]?[0-9]|2[ -]?[0-57-9]|3[ -]?[1-9]|4[ -]?[7-9]|5[ -]?[018])[ -]?[0-9]|3[ -]?0[ -]?[0-5])(?:[ -]?[0-9]){5})$/

Pouco preciso:

/^(?:\+?61|0)[2-478](?:[ -]?[0-9]){8}$/

Todos os números de telefone australianos (apenas fixos - indicativo obrigatório)

Muito preciso:

/^\(?(?:\+?61|0)(?:2\)?[ -]?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])|3\)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])|7\)?[ -]?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)|8\)?[ -]?(?:5[ -]?[1-4]|6[ -]?[0-8]|[7-9][ -]?[0-9]))(?:[ -]?[0-9]){6}$/

Pouco preciso:

/^(?:\+?61|\(?0)[2378]\)?(?:[ -]?[0-9]){8}$/

Números de telefone fixo da Nova Gales do Sul (indicativo opcional)

Muito preciso:

/^(?:\(?(?:\+?61|0)2\)?[ -]?)?(?:3[ -]?[38]|[46-9][ -]?[0-9]|5[ -]?[0-35-9])(?:[ -]?[0-9]){6}$/

Pouco preciso:

/^(?:\(?(?:\+?61|0)2\)?(?:[ -]?[0-9]){7}[0-9]$/

Números de telefone fixo de Victoria e da Tasmânia (indicativo opcional)

Muito preciso:

/^(?:\(?(?:\+?61|0)3\)?[ -]?)?(?:4[ -]?[0-57-9]|[57-9][ -]?[0-9]|6[ -]?[1-67])(?:[ -]?[0-9]){6}$/

Pouco preciso:

/^(?:\(?(?:\+?61|0)3\)?(?:[ -]?[0-9]){7}[0-9]$/

Números de telefone fixo de Queensland (indicativo opcional)

Muito preciso:

/^(?:\(?(?:\+?61|0)7\)?[ -]?)?(?:[2-4][ -]?[0-9]|5[ -]?[2-7]|7[ -]?6)(?:[ -]?[0-9]){6}$/

Pouco preciso:

/^(?:\(?(?:\+?61|0)7\)?(?:[ -]?[0-9]){7}[0-9]$/

Números de telefone fixo da Austrália Meridional, Território do Norte e Austrália Ocidental (indicativo opcional)

Muito preciso:

/^(?:\(?(?:\+?61|0)8\)?[ -]?)?(?:5[1-4]|6[0-8]|[7-9][0-9])$/

Pouco preciso:

/^(?:\(?(?:\+?61|0)8\)?(?:[ -]?[0-9]){7}[0-9]$/

Apenas números de telemóvel australianos

Muito preciso:

/^(?:\+?61|0)4 ?(?:(?:[01] ?[0-9]|2 ?[0-57-9]|3 ?[1-9]|4 ?[7-9]|5 ?[018]) ?[0-9]|3 ?0 ?[0-5])(?: ?[0-9]){5}$/

Pouco preciso:

/^(?:\(?(?:\+?61|0)4\)?(?:[ -]?[0-9]){7}[0-9]$/

Número de telefone belga

/^((\+|00)32\s?|0)(\d\s?\d{3}|\d{2}\s?\d{2})(\s?\d{2}){2}$/

Número de telemóvel belga

/^((\+|00)32\s?|0)4(60|[789]\d)(\s?\d{2}){3}$/

Número de telefone francês

/^((\+|00)33\s?|0)[1-59](\s?\d{2}){4}$/

Número de telemóvel francês

/^((\+|00)33\s?|0)[67](\s?\d{2}){4}$/

Número de telefone luxemburguês

/^((\+|00\s?)352)?(\s?\d{2}){3,4}$/

Número de telemóvel luxemburguês

/^((\+|00\s?)352)?\s?6[269]1(\s?\d{3}){2}$/

Notas alemãs (com mais ou menos opcional)

/^[1-6]{1}[\+|\-]?$/


Validação de idade

Exemplo: idade 20-99

/([2-9][0-9])/

Exemplo: idade 18-35

/(1[8-9]|2[0-9]|3[0-5])/

Exemplo: idade 19-65

/^(1[8-9]|[2-5][0-9]|6[0-5])$/


Validação de números

Números de 1 a 99999

/^([1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9])$/
/^[1-9][0-9]{0,4}$/ does the same as above but should run a little faster

Números de 1 a 999, de 1.000 a 999.999 e a 999.999.999

/^[1-9][0-9]{0,2}(?:\.[0-9]{3}){0,2}$/

Aceita números de 1 a 999, de 1.000 a 999.999 e a 999.999.999, mas rejeita números como 999.1.1 , 94.22.22, 999.1.22, 999.11.1, 999.1.333

Validação de números com decimais opcionais (para preços)

Aceita números de 0 a 199, com 2 casas decimais opcionais:

/^([1][0-9][0-9]|[1-9][0-9]|[0-9])((\.)[0-9][0-9])?$/

Validação de números com separador de milhares

Espaço como separador, sem sinal de menos

/^(?!0)\d{1,3}(\ \d{3})*$/

Ponto como separador, sinal de menos permitido

/^-?(?!0)\d{1,3}(\.\d{3})*$/

Força duas casas decimais e aceita números de 1.00 a 999,999,999.00, com uma vírgula opcional a separar milhares/milhões, incluindo todos os seguintes: 1.00, 1,000.00, 12,345.67, 12345,02, 123,456,468.00, 1234566.00, 123456789.00 mas não 1,23.00, 12,3.4 ou 1234,43.04

/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

Semelhante ao anterior: força duas casas decimais, mas aceita um "0" antes do separador decimal ",".

/[0-9]{0,2}(?:,?[0-9]{3}){0,3}\.[0-9]{2}$/

Igual ao anterior, mas as duas casas decimais são opcionais:

/^[1-9][0-9]{0,2}(?:,?[0-9]{3}){0,3}(?:\.[0-9]{2})?$/

Mês (1-12)

Se quiser perguntar o mês de nascimento de uma pessoa, pode validar a resposta da seguinte forma:

/^[0]*[1-9]$|^[0]*1[0-2]$/

Largura mínima (definida como 3 neste exemplo)

/^.{3,}$/


Moeda

Moeda dos EUA (símbolo do dólar e cêntimos opcionais)

/^\$?\d+(\.(\d{2}))?$/

Verificar a utilização da vírgula:

/^\$?\d{1,3}(\d+(?!,))?(,\d{3})*(\.\d{2})?$/

Preço suíço

Um número com duas casas decimais após o ponto decimal, em que a última é 5 ou 0:

/^(\d+)(\.\d(05)?)?$/


Validar pontuação

1-10

/^[1-9]{1}$|^10$/

1-100

/^[1-9]?[0-9]{1}$|^100$/


Validação de texto

O tipo de pergunta Textos curtos múltiplos não suporta, de momento, um número mínimo ou máximo de respostas. Uma forma de contornar esta limitação é utilizar um tipo de pergunta Texto livre longo com uma expressão regular.

A expressão abaixo verifica se existe pelo menos uma palavra por linha, em pelo menos 3 linhas e no máximo 10 linhas:

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){2,10}/is

Se quiser, por exemplo, cinco palavras por linha, pode alterar o primeiro e o último asterisco para {4,}:

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+){4,})){2,10}/is

Se quiser uma ou mais palavras por linha (entre a linha 1 e a linha 5), pode alterar o conteúdo das últimas chavetas para 0,4 (utilize 0 porque a primeira linha já está a ser correspondida).

/(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)(?:[,.;:?!& \n\r]?(?:\n|\r|\n\r|\r\n)(?:[^,.;:?!& \n\r]+(?: [^,.;:?!& \n\r]+)*)){0,4}/is

Contagem de palavras

O seguinte limita o número de palavras permitidas a um mínimo de 1 e um máximo de 200:
/^[-\w]+(?:\W+[-\w]+){0,199}\W*$/
Para aumentar o mínimo, altere a parte zero de {0,199}.

Para aumentar ou diminuir o máximo, altere a parte "199" de {0,199}.

Validação de hora

Existem várias formas de escrever formatos de hora. Algumas das opções possíveis são 12 horas ou 24 horas, com ou sem segundos. Embora seja possível utilizar o tipo de pergunta de data (que também pode captar a hora), pode utilizar o tipo de pergunta Texto livre curto com uma das expressões regulares de validação abaixo.

As três cadeias de validação seguintes testam a hora no formato de 24 horas (por ordem de aparição) sem segundos, com segundos opcionais e, por último, com segundos obrigatórios:

/^(?:[01][0-9]|2[0-3]):[0-5][0-9]$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9](?::[0-5][0-9])?$/
/^(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]$/

As três seguintes correspondem à hora no formato de 12 horas, como acima, com segundos, com segundos opcionais e com segundos obrigatórios:

/^(?">00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))$/
/^(?:00:[0-5][0-9](?::[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?::[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?::[0-5][0-9])? (?:pm|PM))$/
/^(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))$/

As três seguintes correspondem à hora no formato de 12 ou 24 horas, como acima, com segundos, com segundos opcionais e com segundos obrigatórios:

/^(?:(?:00:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9])$/
/^(?:(?:00:[0-5][0-9](?[0-5][0-9])? (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9](?[0-5][0-9])? (?:[ap]m|[AP]M)|12:[0-5][0-9](?[0-5][0-9])? (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9](?[0-5][0-9])?)$/
/^(?:(?:00:[0-5][0-9]:[0-5][0-9] (?:am|AM)|(?:0[1-9]|1[01]):[0-5][0-9]:[0-5][0-9] (?:[ap]m|[AP]M)|12:[0-5][0-9]:[0-5][0-9] (?:pm|PM))|(?:[01][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9])$/

Estados dos EUA

Para validar um estado, utilize o seguinte (o exemplo é o Texas):

  • TX apenas em maiúsculas:
    /^(TX)$/
    
  • tx apenas em minúsculas:
    /^(tx)$/
    
  • TX em maiúsculas ou minúsculas:
    /^([T|t][X|x])$/
    


Filtro de palavrões

Para filtrar palavrões numa resposta:

/^(?i)((?!\bENTERPROFANITYHERE\b).)*$(?-i)/

Substitua "ENTERPROFANITYHERE" pelo palavrão pretendido.

O \b permite a passagem de palavras como "assassination" e "hello" se introduzir "ass" ou "hell" como palavrão. Isto também funciona se quiser excluir outras palavras, nomes, etc. das respostas.


Ligações úteis

No início desta secção da wiki, recomendamos que utilize https://regex101.com/ para testar/criar expressões regulares. Também pode utilizar https://www.regextester.com/ para criar expressões, caso não fique satisfeito com a primeira opção. Pode utilizar https://extendsclass.com/regex-tester.html para visualizar expressões regulares.