正则表达式数字校验问题?

dhzsir 2005-12-02 01:51:04
我写了一个数字匹配的正则表达式。支持正负号,允许小数点。

但发现该数字里面有字符串也能通过?

checkValue = "21t2.2"
Regex.IsMatch(checkValue,@"^[-\+]?([1-9]{1}[1-9]*)|([0])(\.\d+)?$"); 为什么结果为TRUE呀:<

请问这里面我什么地方写错了呀?
...全文
201 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
低调的小青蛙 2005-12-02
  • 打赏
  • 举报
回复
并且楼主这个应用中应该这样:

^[+-]?(xxxxxx|xxxxxx)$
低调的小青蛙 2005-12-02
  • 打赏
  • 举报
回复
楼主错在这里:

^xxxxxx|xxxxxx$

正确的写法是:

^(xxxxxx|xxxxxx)$

因为优先级的问题,^ 只属于前面那个子表达式,$ 只属于后面那个子表达式,因此 "21t2.2" 实际上只被匹配了 "21" 而已,所以得到 TRUE
swordragon 2005-12-02
  • 打赏
  • 举报
回复
试试这个:

^[+-]?\d*([\.]?\d*)?$
mathsword 2005-12-02
  • 打赏
  • 举报
回复
少了括号
q_po_o 2005-12-02
  • 打赏
  • 举报
回复
@"^[\-\+]?\d+(\.\d)?\d*$"
mathsword 2005-12-02
  • 打赏
  • 举报
回复
^[-\+]?(([1-9]{1}[1-9]*)|([0]))(\.\d+)?$

这样就可以了
peak_weng 2005-12-02
  • 打赏
  • 举报
回复
Regex.IsMatch(checkValue,@"^[-\+]?(\d+)[.](\d*)?$");

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧