Quiero entrada de usuario solamente 0-9 y solo una vez "."PHP regex - número flotante válido
patt = /[^0-9(.{1})]/
1.2222 -> true
1.2.2 -> false (only once '.')
ayúdame, gracias!
Quiero entrada de usuario solamente 0-9 y solo una vez "."PHP regex - número flotante válido
patt = /[^0-9(.{1})]/
1.2222 -> true
1.2.2 -> false (only once '.')
ayúdame, gracias!
Puede usar is_numeric()
con la advertencia de que acepta un poco más de lo que uno normalmente quiere (por ejemplo, 1e4
).
¿Por qué no utilizar is_numeric
si no tiene experiencia con expresiones regulares?
En cuanto a su expresión regular: .
coincide con todos los caracteres, \.
coincide con un punto. {1}
no es necesario. Y no tengo idea de qué estás tratando de hacer con [^ ... ]
. Lea regular expressions tutorial si realmente desea usar expresiones regulares en algún lugar de su código.
¿Por qué no utilizar http://php.net/manual/en/function.is-float.php? Pero de todos modos, el RegEx sería ^[\d]+(|\.[\d]+)$
¡diviértase!
/^-?(?:\d+|\d*\.\d+)$/
Esto coincide con las carrozas normales, p. Ej. 3.14
, abreviaturas para la parte decimal, p. Ej. .5
y enteros, p. Ej. 9
, así como números negativos.
esto es lo que está buscando
$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";
esto sólo acepta "123" o "123.456", no" .123" o "14e + 15". Si necesita estos formularios también, intente is_numeric
+1 para comentarios paso a paso – alex
¿Para qué sirve D? – AntonioCS
@AntonioCS es para el delimitador $ ending [referencia sobre modificadores PCRE] (http://php.net/manual/en/reference.pcre.pattern.modifiers.php) 'D (PCRE_DOLLAR_ENDONLY) Si este modificador es set, un metacarácter de dólar en el patrón coincide solo al final de la cadena de asunto. Sin este modificador, un dólar también coincide inmediatamente antes del carácter final si se trata de una nueva línea (pero no antes de otras líneas nuevas).Este modificador se ignora si m se establece el modificador. No existe un equivalente para este modificador en Perl. FYI: la x es para Extendido: para suprimir cualquier carácter en blanco de caracteres – MediaVince
Las expresiones regulares son para hacer coincidir patrones de cadena. Si no está explícitamente después de validar el formato de la cadena de entrada (pero el valor real), también se puede utilizar
filter_var("1.33", FILTER_VALIDATE_FLOAT);
para asegurarse de que la entrada se puede utilizar como un valor flotante. Esto devolverá FALSE
si no es un flotante y el valor flotante o entero en caso contrario. Se aplican las reglas type juggling.
Esta expresión regular:
\d*(?:\.\d+)?
dará resultados:
123 -> true
123.345 -> true
123. -> true
.345 -> true
0.3345 -> true
Sin embargo, es preciso comprobar si el vacío de la entrada antes de usarlo debido a la expresión regular también permite de longitud cero entrada.
Debe encerrar la alternancia entre paréntesis, de lo contrario, el delimitador de inicio de cadena solo se aplicará con enteros y el delimitador de final de cadena solo con decimales. –
Buena captura, fija. –
Esto también me funciona para INT. Gracias. – Strabek