Increible

21/04/2004 - 15:56 por fjmasero | Informe spam
Wenas:

¿Como es posible que

v="20e41"
Response.Write isnumeric(v)

de como resultado True?.

Investigando, con "20e41" tb pasa, pero con ninguna letra
+.

Tb he observado que con, por ejemplo, "1d1" sucede igual.

¿Es posible que sea el asunto de los numeros
exponenciales?.

Si es así, ¿como controlo que el valor de la var, q en mi
aplicación viene en Request.QueryString, sea un numero,
si el usr puede haber introducido numeroDnumero, o
numerodnumero, o numeroEnumero, o numeroenumero?.

Salu2

Preguntas similare

Leer las respuestas

#11 Kravek
22/04/2004 - 16:41 | Informe spam
Método rupestre pero efectivo...

Tratalo como una cadena y mira que cada uno de los dígitos sea un número;)

Otro método creo recorar que había un control regexpression o algo así (mira
en www.devguru.com) prueba que corresponfa con una máscara de todo números y
et voile op
Respuesta Responder a este mensaje
#12 Manuel Etcheto
22/04/2004 - 19:04 | Informe spam
Buenas
Lo ideal es usar expresiones regulares para validar TODO
lo que viene del request (incluso textos que irán a bd o
al browser, y sobre todo si trabajas con fso y nombres de
archivos que se pueden camuflar...)
Lo puedes hacer en asp con vbscript o jscript
<%
dim mivar
mivar = Trim(Request.querystring("num"))
if mivar <> "" Then
if esnumeroValido(mivar)
' validar que no haya desbordamiento...
ejecutar
else
noejecutar
End if
Else
noejecutar
End if

Function esnumeroValido(cadena)
esnumeroValido = false
dim re
If IsNumeric(cadena) Then
set re = new regexp
''re.pattern = "^\d{0,5}(\.\d{1,2}){0,1}$" ' opción hasta
5 enteros punto 2 decimales o ".uno/dos decimales"

''re.pattern = "^\-?((\d{0,5}([\.\,]\d{1,2}){1})|(\d{1,5}))
$" '' positivos o negativos enteros y/o 2 decimales maximo

re.pattern = "^\d{1,5}$" ' 1 a 5 enteros positivos
if re.test(cadena) Then
esnumeroValido = true
End If
End if
End Function
%>
Suerte
Manuel

pd: Igual aunque la página sea vbscript puedes hacer un
script de servidor Jscript con la función que es similar
excepto la sintaxis {} etc.
La ventaja es que puedes copiar/pegar la misma función en
un javascript y validar en el cliente también para evitar
submit que no van a superar la validación server (que en
definitiva es la única que realmente vale)
Perdón por lo extenso, espero sea útil.


Bueno, lo primero ... gracias a todos por vuestro interés
y ayuda.

Conozco las diferencias entre vbscript, jscript,
javascript, etc.

Mi asunto es que necesito comprobar la validez (q sea
numérico) de un valor recibido mediante un parametro en
url, y si es correcto, realizar los procedimientos que
correspondan, "atacando" a bdd, mediante dll, etc.

Para ello, no puede usar javascript, ni generarlo, y
tambpoco me permiten usar jscript.

¿Alguna idea?

Salu2




No tengo ninguna confusión, sé que JScript es la


particular implementación
de Microsoft de la especificación ECMAScript Edition 3,


y precisamente por
eso funciona con la tecnología ASP. Si dije Javascript


fue para que lo
comprendiera claramente en contraposición con Visual


Basic Script. Y ya que
como bien dices que la sintáxis es la misma que JScript,


no creo que le
fuera a causar mayor problema, lo grave hubiera sido


confundir Java con
Javascript o JScript.

"Kravek" <rubengARROBAkailea4.net> wrote in message
news:%
No confundas JScript con Javascript, si bien es cierto




que en casi toda la
bibliografía se usan como sinónimos, si bien es cierto




quela sintaxis es
idéntica, también es cierto que los objetos propios de




cada uno son
distintos (culpa de ello la tiene el contexto de




ejecución)






.



.

Respuesta Responder a este mensaje
#13 fjmasero
23/04/2004 - 09:58 | Informe spam
Hola Manuel:

Gracias por contestar y por tu ayuda.

Cuando dices q hay q validar desbordamiento, ¿a q te
refieres y como hacerlo?.

POr otro lado, esto de las expresiones regulares las
llevo muy mal, nunca la he entendido, asi q ¿podrías
explicarme o hacer una para que solo sean digitos?.

La última que hay en tu function es para esto, pero la
limitas a 5 (o n digitos). ¿No hay forma de no limitarla?.

Es q estos datos numericos, enteros positivos pueden
llegar a ser muy grandes, puesto q son ids (identity de
SQL Server) de una base de datos.

Salu2

Buenas
Lo ideal es usar expresiones regulares para validar TODO
lo que viene del request (incluso textos que irán a bd o
al browser, y sobre todo si trabajas con fso y nombres


de
archivos que se pueden camuflar...)
Lo puedes hacer en asp con vbscript o jscript
<%
dim mivar
mivar = Trim(Request.querystring("num"))
if mivar <> "" Then
if esnumeroValido(mivar)
' validar que no haya desbordamiento...
ejecutar
else
noejecutar
End if
Else
noejecutar
End if

Function esnumeroValido(cadena)
esnumeroValido = false
dim re
If IsNumeric(cadena) Then
set re = new regexp
''re.pattern = "^\d{0,5}(\.\d{1,2}){0,1}$" ' opción


hasta
5 enteros punto 2 decimales o ".uno/dos decimales"

''re.pattern = "^\-?((\d{0,5}([\.\,]\d{1,2}){1})|(\d


{1,5}))
$" '' positivos o negativos enteros y/o 2 decimales


maximo

re.pattern = "^\d{1,5}$" ' 1 a 5 enteros positivos
if re.test(cadena) Then
esnumeroValido = true
End If
End if
End Function
%>
Suerte
Manuel

pd: Igual aunque la página sea vbscript puedes hacer un
script de servidor Jscript con la función que es similar
excepto la sintaxis {} etc.
La ventaja es que puedes copiar/pegar la misma función


en
un javascript y validar en el cliente también para


evitar
submit que no van a superar la validación server (que en
definitiva es la única que realmente vale)
Perdón por lo extenso, espero sea útil.


Bueno, lo primero ... gracias a todos por vuestro




interés
y ayuda.

Conozco las diferencias entre vbscript, jscript,
javascript, etc.

Mi asunto es que necesito comprobar la validez (q sea
numérico) de un valor recibido mediante un parametro en
url, y si es correcto, realizar los procedimientos que
correspondan, "atacando" a bdd, mediante dll, etc.

Para ello, no puede usar javascript, ni generarlo, y
tambpoco me permiten usar jscript.

¿Alguna idea?

Salu2




No tengo ninguna confusión, sé que JScript es la


particular implementación
de Microsoft de la especificación ECMAScript Edition






3,
y precisamente por
eso funciona con la tecnología ASP. Si dije Javascript


fue para que lo
comprendiera claramente en contraposición con Visual


Basic Script. Y ya que
como bien dices que la sintáxis es la misma que






JScript,
no creo que le
fuera a causar mayor problema, lo grave hubiera sido


confundir Java con
Javascript o JScript.

"Kravek" <rubengARROBAkailea4.net> wrote in message
news:%
No confundas JScript con Javascript, si bien es








cierto
que en casi toda la
bibliografía se usan como sinónimos, si bien es








cierto
quela sintaxis es
idéntica, también es cierto que los objetos propios








de
cada uno son
distintos (culpa de ello la tiene el contexto de




ejecución)






.



.



.

Respuesta Responder a este mensaje
#14 Manuel Etcheto
23/04/2004 - 15:44 | Informe spam
Hola
Puedes no limitarla ("x*" cero o más, o "x+" una o más),
pero la cantidad de dígitos siempre tendrías que
limitarla, al máximo del tipo de datos (no puedes aceptar
cualquier cantidad de dígitos...)

Me refería al desborde del tipo de datos. Con la expresión
regular controlas caracteres, y puedes controlar cantidad
de dígitos,ok, pero luego eso es un número... y los
límites de los tipos numéricos no coinciden con la
cantidad de dígitos...

El identity en tu SQL Server puede ser tinyInt, smallint,
int, bigint...
Suponiendo que fuera INT, podrías limitarlo ("^\d{1,10}$")
a 10 dígitos como primera medida para
descartar "111222333444" etc.
Pero luego 2000111222 vale aunque 2222333444 se desborda,
porque el máximo es 2.147.483.647 (4 bytes) para el
parámetro INT.

Sólo dígitos es \d (cuidado "d" minúscula) o [0-9]

Suerte
Manuel


Hola Manuel:

Gracias por contestar y por tu ayuda.

Cuando dices q hay q validar desbordamiento, ¿a q te
refieres y como hacerlo?.

POr otro lado, esto de las expresiones regulares las
llevo muy mal, nunca la he entendido, asi q ¿podrías
explicarme o hacer una para que solo sean digitos?.

La última que hay en tu function es para esto, pero la
limitas a 5 (o n digitos). ¿No hay forma de no limitarla?.

Es q estos datos numericos, enteros positivos pueden
llegar a ser muy grandes, puesto q son ids (identity de
SQL Server) de una base de datos.

Salu2
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida