这个正则表达式有问题嘛?

2021-03-03 22:53:41 +08:00
 lollipop43

PAT 1108 这道题里有一个定义,合法的输入是: A legal input is a real number in [−1000,1000] and is accurate up to no more than 2 decimal places. 我写的表达式是这样的,有漏网之鱼嘛 (1000)|(-1000)|(-?\d{1,3}(.\d{0,2})?)

748 次点击
所在节点    问与答
2 条回复
noqwerty
2021-03-03 23:47:25 +08:00
1. 小数点需要转义,用\.
2. 应该要加上^$吧?不然 1001 里面的 100 也能被第三部分匹配到。
3. 另外类似 001 这种数字也能被匹配到,不知道是否符合要求。
imdong
2021-03-03 23:57:07 +08:00
^-?([1-9][0-9]{0,2})?[0-9]$

这样应该更好一些,至于 -0 的问题,如果要解决,就复制成两段.

^([1-9][0-9]{0,2})?[0-9]|-([1-9][0-9]{0,3})$

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/758203

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX