2

刚刚遇到了一个相当奇怪的功能,其中内置的 IsNumeric 函数是经典的 ASP。

我有一个 JSONArray 类,可以将其内容打印到字符串中 - 它IsNumeric用于确定是否使用"'s 转义值。一切正常,直到今天客户报告了一个以前看不见的错误!

经过一番挖掘,我发现从 AJAX 调用返回的 JSON 数组中的一些记录格式不正确。更多挖掘。原来格式类似于的字符串'2D25'将被评估为数字IsNumeric,因此不会被转义!

有人知道为什么吗?ASP 是否认为D可以与 a 互换.

另外,我应该如何解决这个问题?正则表达式会是更好的解决方案吗?

谢谢!

4

2 回答 2

4

2D25是一个十六进制值。请参阅http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.information.isnumeric.aspx,特别是:“如果 Expression 是包含有效十六进制或八进制数字的字符串,IsNumeric 将返回 True。” RegEx 可能是您最好的选择。

<<< 编辑 :: 经典 ASP 参考 >>>

http://classicasp.aspfaq.com/general/what-is-wrong-with-isnumeric.html

在 Classic ASP 中,D用于表示double精度。

于 2012-07-17T15:06:33.297 回答
2

RegEx 确实是要走的路,这里有一个这样的解决方案的例子

Function myIsNumeric(ByVal Value)
  Set regEx = New RegExp
  regEx.pattern = "^(0|[1-9][0-9]*)$"
  myIsNumeric = Regex.Test(Value)
End Function

这里有一个测试

if myIsNumeric("2D25") then
  Wscript.Echo "true"
else
  Wscript.Echo "false"
end if

给出错误的

于 2012-07-17T16:33:35.433 回答