

















这是一个创建于 1432 天前的主题,其中的信息可能已经有所发展或是发生改变。
1 必须是合法数字(前面不能多个 0 ) 2 范围必须在-1000 到 1000 之间(包括-1000 和 1000 ) 3 可以是整数,可以是小数,如果是小数位数必须小于等于两位
例如 0.001 、9999 、-1.010 、01.32 不合法 99.99 、0 、-1.2 合法
1 golangLover 2022 年 6 月 25 日 via Android如果这个东西难以表达,那根本不应该用正则 |
2 wdc63OP @golangLover 老大说正则效率最高,考虑正则优先,我也想写几条 if else ,实在不好搞就算了吧 |
4 ETiV 2022 年 6 月 25 日658 steps, 0.2ms 整体来看效率并不高 🤣(小心 RegEx DoS 攻击) |
5 autoxbc 2022 年 6 月 25 日正则被广泛使用的原因是它是线性书写的语言,没有任何结构,也就可以在无需约定结构的前提下,在各种高级语言中嵌入 这个优点也正是正则的缺点,因为没有结构,在人类可读的范围内,表达力严重受限,完全无法和有控制流的高级语言相比 所以正则的场景就是稍微浅浅的用一下,如果普通水准的程序员无法顺利写出来,那么最终写出来了别人也无法顺利读懂 |
9 ntdll 2022 年 6 月 25 日^-?(?:[1-9]{1,1}\d{0,}|0)(?:\.\d{0,}[^0]|)$ 但是可读性真的很差,而且速度也不快。 怀疑可能是 X-Y 问题,多数情况下可以利用语言提供的 parseInt/parseFloat 一类的方法来处理,但是又要排除 01.32 这种情况,着实有点奇怪。 |
10 darklights 2022 年 6 月 25 日3 楼和 8 楼的大佬给出的已经很接近了,但还是有例外( 1000.99 ) 不建议用正则处理这类多重逻辑的问题,可读性是其次,要考虑到所有可能的情况才是最伤脑细胞的,然而几个 if else 就能解决。用合适工具解决合适问题。 |
11 muhuan 2022 年 6 月 25 日^-?(((([1-9][0-9]{0,2})|0)(\.[0-9]{1,2})?)|(1000))$ |
14 Mutoo 2022 年 6 月 25 日忘了处理两位小数了,不过用 rulex 语法还是很容易写出来的。有兴趣可以自己试试 |
15 cpstar 2022 年 6 月 25 日既然是数字,为什么偏要用字符串的处理方式?还断言效率高?? |
16 snw 2022 年 6 月 25 日 via Android正则效率高是针对字符串简单规则,而且需要经验不然很容易踩坑。你这种数字需求并不适合用正则。 |
17 snw 2022 年 6 月 25 日 via Android对了,如果科学计数法参合进来就更烧脑了。 |
18 TinkPRO 费脑子 |
19 Nasei 2022 年 6 月 25 日^-?(([1-9]\d{0,2}|0)(\.\d\d)?|1000)$ |
23 wdc63OP 谢谢各位, 昨晚睡了没及时回复,在此不再一一道谢。 |
24 cpstar 2022 年 6 月 25 日OP 22#,所以你看我把 x 当成字符串处理了,x*1 才是数字型。服务器上运行也可以啊,只不过不想 javascript 那种弱类型,比如 Float.parseFloat(),多几道手续而已。 另外 H5 提供了<input type="number" name="marks" min="-1000.00" max="1000.00" step="0.01"> 我觉得如果非要限定某种方法解决问题,那实际上就并不是在解决问题,而在钻牛角尖。 |
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。