求“比例”的正则表达式

求一个匹配“比例”正则表达式:

要求大于等于0小于等于1,如:0,0.234,1...这些,同时又可以为空
阅读 5.9k
6 个回答

RegExp("^(?:0(?:.[0-9]+){0,1}|1)$").test('0134') 为true是因为你少了.[0-9]+前的两个\\
如果你写 RegExp("^(?:0(?:\\.[0-9]+){0,1}|1)$").test('0134') 它就是false了
发现还能短短
^(?:0(?:\.\d+)?|1)$

比较简单的写法: /(0(\.[0-9]+)?|1)?/

clipboard.png

========== 上面是原答案 ==============

更新下:/^(?:0(?:\.[0-9]+)?|1)?$/

之前写成:^$|0\.[0-9]+$|0|1,
之前写的是“0.[0-9]+$”,表示匹配0.*的数,然后加上或空或0或1就以为解决了,然后后面发现0123和1234这种都能通过。

/^(0|1|(0\.[0-9]+))$/

应该能满足你所有的需求了:

/^((0\.[0-9]*[1-9])|0|1|)$/
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题