日期:2014-05-17  浏览次数:20460 次

大家来帮忙看一个正则表达式
首先问一个问题,别见怪,我还不知道呢,正则表达式是不是通用的,还是每种语言都有自己的正则表达式规则?

^[0-9]+\.{0,1}[0-9]{0,2}$

这是看到别人写的,匹配:整数或小数。

但是我现在这存在bug,例如:12.

小数点后面不带数字一样可以匹配的,敢问一句,数学中可以这样写小数的吗?

大家可以改一下,或者有更好的都可以发上来讨论一下,谢谢。

------解决方案--------------------
不同语言用的是不同的正则引擎,行为会有差异。但大多数语法相同。

(^\d+$)|(^\d+\.\d{1,2}$)
------解决方案--------------------
C# code
            /// <summary>
            /// 验证字符串是否是整数。
            /// </summary>
            /// <param name="checkedStr">需验证的字符串。</param>
            /// <returns></returns>
            public static bool IsInteger(string checkedStr)
            {
                return Regex.IsMatch(checkedStr, @"^(-?[1-9]\d*|0)$");
            }

------解决方案--------------------
C# code
            /// <summary>
            /// 验证字符串是否是实数。
            /// </summary>
            /// <param name="checkedStr">需验证的字符串。</param>
            /// <returns></returns>小数
            public static bool IsNumeric(string checkedStr)
            {
                if (IsInteger(checkedStr))
                    return true;
                else
                    return Regex.IsMatch(checkedStr, @"^-?([1-9]\d*|0).\d+$");
            }

------解决方案--------------------
探讨
小数点后面不带数字一样可以匹配的,敢问一句,数学中可以这样写小数的吗?

------解决方案--------------------

------解决方案--------------------
把过客的改一点,还可识别符号:
^[+-]?([1-9][0-9]*|0)(\.[0-9]+)?$
------解决方案--------------------
正则只会基础的~没深入弄过 绑定 让一个头像为麦迪的来帮你
------解决方案--------------------

C# code

^([0-9]|[1-9]+)(\.\d+)?$

------解决方案--------------------
常用正则表达式大全
http://www.xunxt.com/forum.php?mod=viewthread&tid=32&fromuid=1