如果我有这些字符串:
"abc"  =  false
"123"  = true
"ab2"  = false
是否有一个命令,比如IsNumeric()或其他东西,可以识别字符串是否是有效数字?
限制文本框的"数字"输入的最佳方法是什么?
我正在寻找允许小数点的东西.
我看到了很多例子.但尚未决定使用哪一个.
来自Praveen Jeganathan的更新
没有更多的插件,jQuery已经jQuery.isNumeric()在v1.7中实现了自己的插件.请参阅:https://stackoverflow.com/a/20186188/66767
我经常使用Request.QueryString[]变量.
在我Page_load经常做的事情:
       int id = -1;
        if (Request.QueryString["id"] != null) {
            try
            {
                id = int.Parse(Request.QueryString["id"]);
            }
            catch
            {
                // deal with it
            }
        }
        DoSomethingSpectacularNow(id);
这一切似乎有点笨拙和垃圾.你怎么处理你Request.QueryString[]的?
我想确定一个值是否为整数(如TryParse在.NET中).不幸的是ISNUMERIC,我不适合我,因为我只想解析整数而不是每种数字.有ISINT什么东西吗?
这里有一些代码可以清楚地表达出来.如果MY_FIELD不是int,则此代码将失败:
SELECT @MY_VAR = CAST(MY_FIELD AS INT)
FROM MY_TABLE
WHERE MY_OTHER_FIELD = 'MY_FILTER'
谢谢
在某些项目中,我需要验证一些数据并尽可能确定它是可以在数学运算中使用的javascript数值.
jQuery和其他一些javascript库已经包含了这样一个函数,通常称为isNumeric.stackoverflow上还有一篇文章被广泛接受为答案,与前面提到的库所使用的一般例程相同.
function isNumber(n) {
  return !isNaN(parseFloat(n)) && isFinite(n);
}
作为我的第一篇文章,我无法在该帖子中回复.我接受的帖子的问题是,似乎有一些角落案例影响了我正在做的一些工作,所以我做了一些改变,试图解决我遇到的问题.
首先,如果参数是长度为1的数组,则上面的代码将返回true,并且该单个元素是上述逻辑认为是数字的类型.在我看来,如果它是一个数组,那么它不是数字.
为了缓解这个问题,我添加了一个检查来从逻辑中对数组进行折扣
function isNumber(n) {
  return Object.prototype.toString.call(n) !== '[object Array]' &&!isNaN(parseFloat(n)) && isFinite(n);
}
当然,您也可以使用Array.isArray而不是Object.prototype.toString.call(n) !== '[object Array]'
编辑:我已经更改了代码以反映数组的通用测试,或者您可以使用jquery $.isArray或原型Object.isArray
我的第二个问题是负十六进制整数文字字符串("-0xA" - > -10)没有被计为数字.但是,正十六进制整数文字字符串("0xA" - > 10)被视为数字.我需要两个都是有效的数字.
然后我修改了逻辑以考虑到这一点.
function isNumber(n) {
  return Object.prototype.toString.call(n) !== '[object Array]' &&!isNaN(parseFloat(n)) && isFinite(n.toString().replace(/^-/, ''));
}
如果你每次调用函数时都担心正则表达式的创建,那么你可以在一个闭包中重写它,就像这样
isNumber = (function () {
  var rx = /^-/;
  return function (n) {
      return Object.prototype.toString.call(n) !== '[object …这对我来说不是一个大问题(据我所知),这更像是我感兴趣的东西.但是什么的主要区别,如果有的话,使用的is_numeric超过preg_match(或反之亦然),以验证用户输入的值.
示例一:
<?php
    $id = $_GET['id'];
    if (!preg_match('/^[0-9]*$/', $id)) {
        // Error
    } else {
        // Continue
    }
?>
示例二:
<?php
    $id = $_GET['id'];
    if (!is_numeric($id)) {
        // Error
    } else {
        // Continue
    }
?>
我假设两者都完全一样,但是有什么具体的差异可能会在某种程度上引起问题吗?有没有"最好的方式"或者我没有看到的东西使它们与众不同.
我需要找出dart中的字符串是否为数字.它需要在dart中的任何有效数字类型上返回true.到目前为止,我的解决方案是
bool isNumeric(String str) {
  try{
    var value = double.parse(str);
  } on FormatException {
    return false;
  } finally {
    return true;
  }
}
是否有本地方式来做到这一点?如果没有,有没有更好的方法呢?
所以我只花了5个小时来解决一个问题,原因不仅是旧的不可靠, ISNUMERIC而且看起来我的问题只出现在UDF中ISNUMERIC声明WITH SCHEMABINDING并在存储过程中被调用(我有很多要将其提炼成测试用例的工作,但我的第一个需要是用可靠的东西替换它.
关于良好,有效的替代品的任何建议ISNUMERIC().显然,真正需要的是变化int,money等等,但什么是使用(最好是在T-SQL,因为在这个项目上,我仅限于SQL Server的人,因为这是一个高容量的SQL服务器到SQL Server数据处理任务)?
我有以下代码,如果我的值无效,则返回错误消息.如果给定的值不是数字,我想给出相同的错误消息.
IF(option_id = 0021) THEN 
      IF((value<10000) or (value>7200000) or /* Numeric Check */)THEN
          ip_msg(6214,option_name);  -- Error Message
          return;
      END IF;
END IF;      
在SQL Server中,我只是使用了ISNUMERIC().我想在Oracle中做类似的事情.如,
IF((!ISNUMERIC(value)) or (value<10000) or (value>7200000))
    THEN ...
我现在正在将一小段PHP代码移植到java,我依靠函数is_numeric($x)来确定是否$x是数字.在java中似乎没有相同的功能,我对目前为止找到的解决方案不满意.
我倾向于这里找到的正则表达式解决方案:http://rosettacode.org/wiki/Determine_if_a_string_is_numeric
我应该使用哪种方法?为什么?
isnumeric ×10
validation ×3
c# ×2
numbers ×2
parsing ×2
sql-server ×2
string ×2
casting ×1
coding-style ×1
dart ×1
integer ×1
java ×1
javascript ×1
jquery ×1
oracle ×1
php ×1
preg-match ×1
sql ×1
t-sql ×1
tryparse ×1