Verifique o espaço em branco no início da string

Eu preciso usar preg_match para verificar que apenas a-z0-9. é usado (incluindo parada completa (.)). Não quero replace nada. O meu problema é que não percebe o espaço em branco no início de uma string.

Além disso, se alguém sabe como verificar que não há duas paradas completas seguidas, ficaria muito grato.

O que eu tenho até agora:

 ("/[^a-z0-9.]+$/",$request) 

Obrigado !

Você pode fazer isso sem regex usando ltrim'

if(ltrim($request) != $request) { // there was whitespace }

 /^(?!.*\.{2,}.*$)[a-z0-9.]+$/ 

Explicação

 ^ # start-of-string anchor
 (?! # começa a aparência negativa ("uma posição não seguida de ...")
   .* # qualquer coisa
   \. {2,} # um ponto, duas vezes ou mais
   .* # qualquer coisa
   $ # o fim da string
 ) # fim lookahead negativo
 [a-z0-9.] + # az ou 0-9 ou ponto, várias vezes
 $ # âncora de fim de corda

fósforos

  • "abc"
  • "abc123"
  • "abc.123"

falha

  • " abc"
  • "abc..123"
  • "abc!"
 ("/[^a-z0-9.]/",$request) 

Editar – Eu enganei sua pergunta. Isso verificará se há um não a-z0-9. personagens.

^ dentro [] negates characers (mudanças significam “qualquer char, exceto estes”)

^ fora de [] significa “início da string” (o mesmo que $ significa “fim da string”)

Então você precisa de algo assim:

("/^[a-z0-9.]+$/",$request)

Se você quiser excluir seqüências de pontos, mas não pontos únicos, você precisa de algo mais complicado:

preg_match('/^([a-z0-9]|(?< !\\.)\\.)+$/', $request);