validacion - validar formulario javascript onclick
Cómo validar dígitos(incluyendo flotadores) en javascript (8)
Actualmente estoy usando esta exp exp:
var valid = (value.match(/^/d+$/));
Pero para dígitos como ''0.40'', o ''2.43'' esto no funciona. ¿Cómo puedo cambiar la experiencia de registro anterior para que coincida con las flotaciones también?
¡No necesitas expresiones regulares para esto! isNaN
convertirá tu valor en Number
:
var valid = !isNaN(value);
P.ej:
!isNaN(''0''); // true
!isNaN(''34.56''); // true
!isNaN(''.34''); // true
!isNaN(''-34''); // true
!isNaN(''foo''); // false
!isNaN(''08''); // true
Edición renuente (gracias CMS):
¡La coerción de tipo arruinado !isNaN('''')
!isNaN('' '')
!isNaN(''/n/t'')
, etc. son todas true
!
Prueba de isNaN
+ FTW isNaN
:
var valid = !/^/s*$/.test(value) && !isNaN(value);
Puaj
Aquí está mi versión RegExp.
var n = /^[+-]?((/./d+)|(/d+(/./d+)?))$/;
Partido
n.test(''3'');
n.test(''3.0'');
n.test(''0.3'');
n.test(''.3'');
n.test(''+3'');
n.test(''+3.0'');
n.test(''+0.3'');
n.test(''+.3'');
n.test(''-3'');
n.test(''-3.0'');
n.test(''-0.3'');
n.test(''-.3'');
No coinciden
n.test('''');
n.test(''+'');
n.test(''-'');
Continuando con el enfoque de @Crescent Fresh , hace algún tiempo, tuve que hacer la validación de números, pero necesitaba verificar si una variable contenía un número sin saber su tipo, podría ser una String
contenga un valor numérico como en este caso, ( Tuve que considerar también la notación exponencial, etc.), un objeto Number
, básicamente cualquier cosa que no pudiera hacer ninguna suposición de tipo.
Y tuve que ocuparme de la conversión de tipos implícita, por ejemplo, como señalé a @Crescent, isNaN
no era suficiente para mi caso:
// string values
!isNaN('' '') == true;
!isNaN(''/t/t'') == true;
!isNaN('''') == true;
// boolean values
!isNaN(true) == true;
!isNaN(false) == true;
// etc..
Terminé escribiendo un conjunto de más de 30 pruebas de unidad que puedes encontrar y ejecutar here , y la siguiente función es la que pasa todas mis pruebas:
function isNumber(n) {
return !isNaN(parseFloat(n)) && isFinite(n);
}
Esto es lo que uso
/[/+]?([/-]?([0-9]{1,})?[/.]?[0-9]{1,})/
Puedes probar mi solución: /^-?/d+(/.?/d+)?$/.test(text)
var valid = value.match (/ / d +?. / d + /);
var valid = (value.match(/^-?/d*(/./d+)?$/));
var valid = (value.match(/^[/d.]+$/));