正则表达式怎么写??

问题描述

验证输入的数据,只能输入0-1间的数据,0不可以输入,1可以输入,且只能有2位小数的正则表达式怎么写?
0.0和0.00也不让通过验证,而1.0和1.00可以通过验证

写好后建议测试以下数据:
0 0.0 0.00 1 1.0 1.00 0.3 0.34

问题出现的环境背景及自己尝试过哪些方法

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

/^(0\.[0-9]{1,2}|1)$/  这个该怎么改呢??

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 2.4k
4 个回答

我这边亲测有效哦~

var regx = /^(0(?!\.00)|1(?=\.00))\.[0-9]{1,2}$/
regx.test('0.00')//false
regx.test('1.00')//true
regx.test('0.11')//true

升级版本 哈哈 题主再试试 我试都ok啦 刚没看清题目

/(^((0(?!\.00|\.0)|1(?=\.00))\.[0-9]{0,2})$)|(^1$)|(^0\.0[1-9]{1}$)|(^1\.0$)/

既然是验证数据的话,这个正则当然是可以写出来的,但是如果要同时兼顾数据的匹配格式和边界条件的话,其实写出来效率很低的。

你这个需求其实可以划分为三个小部分:

  • 首先要排除 0、0.0,0.00 这种无意义的数字
  • 要满足 0.xx 小数的格式
  • 要能够输入 1

关于第二条,使用正则来写就可以了,比如 ^0\.[1-9]+$,之后对于另外两个条件,通过 parseFloat 与 10 分别比较即可提前得出验证结果,其实没必要把这两个也写到正则里。

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

不知可否满足, xxx.test(Num), Num最好用字符串形式。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏