PHP regex – número de flutuação válido

Eu quero que o usuário apenas aponte 0-9 e apenas uma vez “.”

patt = /[^0-9(.{1})]/ 1.2222 -> true 1.2.2 -> false (only once '.') 

me ajude, obrigado!

 /^-?(?:\d+|\d*\.\d+)$/ 

Isso combina com flutuadores normais, por exemplo, 3.14 , esquemas para a parte decimal, por exemplo .5 e números inteiros, por exemplo, 9 , bem como números negativos.

isso é o que você está procurando

 $re = "~ #delimiter ^ # start of input -? # minus, optional [0-9]+ # at least one digit ( # begin group \. # a dot [0-9]+ # at least one digit ) # end of group ? # group is optional $ # end of input ~xD"; 

isso só aceita “123” ou “123.456”, não “.123” ou “14e + 15”. Se você também precisa desses formulários, tente is_numeric

As expressões regulares são para padrões de string correspondentes. Se você não estiver explicitamente após validar o formato da string de input (mas o valor real), você também pode usar

 filter_var("1.33", FILTER_VALIDATE_FLOAT); 

para garantir que a input possa ser usada como um valor flutuante. Isso retornará FALSE se não for um flutuador e o valor flutuante ou inteiro de outra forma. São aplicáveis ​​regras de malabarismo de qualquer tipo .

Você pode usar is_numeric() com a ressalva que aceita um pouco mais do que um geralmente quer (por exemplo, 1e4 ).

Por que não usar http://php.net/manual/en/function.is-float.php ? Mas de qualquer forma, o RegEx seria ^[\d]+(|\.[\d]+)$ divirta-se!

Esta regex:

 \d*(?:\.\d+)? 

dará resultados:

 123 -> true 123.345 -> true 123. -> true .345 -> true 0.3345 -> true 

No entanto, você deve verificar o vazio da input antes de usá-lo porque o regex também permite a input de comprimento zero .

Por que não usar apenas is_numeric se você não tiver experiência com expressões regulares.

Quanto à sua regex:. combina todos os caracteres, \. combina com um ponto. {1} não é necessário. E não tenho idéia do que você está tentando fazer com [^ ... ] . Leia o tutorial de expressões regulares se você realmente quiser usar expressões regulares em algum lugar em seu código.