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})?)
1
noqwerty 2021-03-03 23:47:25 +08:00
1. 小数点需要转义,用\.
2. 应该要加上^$吧?不然 1001 里面的 100 也能被第三部分匹配到。 3. 另外类似 001 这种数字也能被匹配到,不知道是否符合要求。 |
2
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})$ |