Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida - Expressão Regular


C0Y073

Pergunta

Pessoal tenho o seguinte problema preciso monta uma expressão regular de busca que retorne TRUE ou FALSE

usei a preg_match

minha expressão tem que conter as seguintes regras

1 - Só pode conter na string os caracteres Z,9 e .

2 - A String nunca pode comecar ou terminar com .

3 - Nunca podera ter mais que um ponto repetido em sequencia apenas em sequencia

Exemplo String que seria validada

Zz99z9.z9z.z99.z9

String que não seria validada

.Zz99z9.z9z.z99.z9

ou

Zz99z9.z9z.z99.z9.

ou

Zz99z9.z9z..z99.z9

entenderam? o ponto nunca pode ta no comeco ou no final da string e nunca pode aparecer em sequencia

montei uma expressao que fico assim ->

/^([Z | 9])([Z9.]+)\\1$/i
ela valida a 1 e a 2 regra, mais a regra de o ponto não repetir em sequencia não consiguir acha uma solucao alguém poderia ajudar? antes de postar testem seu codigo online para ver o resultado, testem nesse site : http://writecodeonline.com/php/ segue uma funcao para testes
function valida($string)
{
    
    return preg_match("/^([Z | 9])([Z9.]+)\\1$/i",$string);
}

if(valida('Z9zZ99.9zz.z.Z'))
{
    echo "Valida";
}
else
{
    echo "Invalida";
}

// Lembrando com essa funcao de teste acima ela retornara valida, mais se na string por dois pontos ou mais em sequencia ela tem que retornar invalida

Editado por C0Y073
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Pessoal consultei um amigo e chegei a solução a expressão ficou assim

/^[Z9]+([Z9]|(\.(?!\.)))*[Z9]$/i

a solução foi usar o lookahead usando a sintaxe (\.(?!\.)) ele procura ate o primeiro . e o próximo carácter não poder ser um "."

ou seja ele não deixa um ponto ser seguido de outro

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...