求一正著表達式(100分)

johnwoo85 2008-11-26 05:54:16
要求輸入一個數值
范圍 -1 - 1之間 不包括 -1 和 1
小數點后最多只能有5位數 例如 0.12345 -0.12345
也可以 0.12 -0.12
望高手解答
急~
小弟再次謝過了
...全文
142 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
johnwoo85 2008-11-27
  • 打赏
  • 举报
回复
謝謝大家 :)
庚武讲堂 2008-11-27
  • 打赏
  • 举报
回复
请问,用正则匹配这个有意义么
liubin911 2008-11-27
  • 打赏
  • 举报
回复
学习,本人刚接触过正则,看起来也迷糊

[Quote=引用 13 楼 root_ 的回复:]
1楼 ^([-]?0\.[0-9]{0,5})|(0)$
12楼 ^(?:-?0\.[0-9]{1,5}|0)$

[/Quote]

看起来2个区别就在{0,5}和{1,5}
这样看起来,1楼的会匹配0. ,而13楼的不会,“|”那里还有什么问题呢,请指教
DavidNoWay 2008-11-27
  • 打赏
  • 举报
回复
mark
我姓区不姓区 2008-11-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 root_ 的回复:]
是楼主的需求不够明确,所以写出的正则可能也不够严谨
C# code//如果允许0.00这样的^(?:-?0\.[0-9]{1,5}|0)$//如果不允许类似0.00这样的^(?:-?0\.(?!0+$)[0-9]{1,5}|0)$


很少对别人写的正则做评论,只是希望两位不要再走入这样的误区,有说得不当的地方请见谅
引用 1 楼 magicbacon 的回复:
^([-]?0\.[0-9]{0,5})|(0)$

1楼这样写是不对的,主要错在“|”的使用上,这样写表示^([-]?0\.[0-9]{0,5})或者(0)$,也就是
0…
[/Quote]
嗯嗯,Thank you~~
root_ 2008-11-26
  • 打赏
  • 举报
回复
是楼主的需求不够明确,所以写出的正则可能也不够严谨
//如果允许0.00这样的
^(?:-?0\.[0-9]{1,5}|0)$
//如果不允许类似0.00这样的
^(?:-?0\.(?!0+$)[0-9]{1,5}|0)$



很少对别人写的正则做评论,只是希望两位不要再走入这样的误区,有说得不当的地方请见谅
[Quote=引用 1 楼 magicbacon 的回复:]
^([-]?0\.[0-9]{0,5})|(0)$
[/Quote]
1楼这样写是不对的,主要错在“|”的使用上,这样写表示^([-]?0\.[0-9]{0,5})或者(0)$,也就是
0.123456789
9876543210
这样的数字都是可以匹配成功的,只不过匹配结果分别是
0.12345
0

[Quote=引用 2 楼 ojlovecd 的回复:]
C# codestringinput=Console.ReadLine();stringpattern=@"^[\-]?0(\.\d{1,5})*$";
Console.WriteLine(Regex.IsMatch(input, pattern));
[/Quote]
2楼这里不能用*,用?可以,用*可以匹配
0.12345.54321
这样的数
-在这里是不需要转义的,而且即使是要转义,\-是对-转义,[-]也是对-转义,[\-]这样写就画蛇添足了

wuyq11 2008-11-26
  • 打赏
  • 举报
回复
可用二楼
kingcsx666 2008-11-26
  • 打赏
  • 举报
回复
学习,看楼上的
cteddy 2008-11-26
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ojlovecd 的回复:]
C# codestringinput=Console.ReadLine();stringpattern=@"^[\-]?0(\.\d{1,5})*$";
Console.WriteLine(Regex.IsMatch(input, pattern));
[/Quote]
你这样做-0也是正确的了啊
^_^

^([\-]?0\.\d{1,5})|0$

还是把0单独出来的好
kfps8kfps8 2008-11-26
  • 打赏
  • 举报
回复
学习...
gaorui929 2008-11-26
  • 打赏
  • 举报
回复
二楼的准
mjjzg 2008-11-26
  • 打赏
  • 举报
回复
哈,没多大区别
icerain911 2008-11-26
  • 打赏
  • 举报
回复
1楼正解
我姓区不姓区 2008-11-26
  • 打赏
  • 举报
回复
还有0.这种情况
magicbacon 2008-11-26
  • 打赏
  • 举报
回复
对的啊,我试过的~
我姓区不姓区 2008-11-26
  • 打赏
  • 举报
回复
1楼的好像匹配0.123456不对哦
我姓区不姓区 2008-11-26
  • 打赏
  • 举报
回复

string input = Console.ReadLine();
string pattern = @"^[\-]?0(\.\d{1,5})*$";
Console.WriteLine(Regex.IsMatch(input, pattern));

magicbacon 2008-11-26
  • 打赏
  • 举报
回复
^([-]?0\.[0-9]{0,5})|(0)$

62,269

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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