表示二进制 32 位十进制数的最佳正则表达式是什么?



试图修复Regex以匹配以下场景:

  • 小数后最多32位
  • 二进制的
  • 没有前导或尾随零

[0|1]*。?[0-1]+([0-1]{32}(?

Regex应该通过这个:1.001100101,但失败了这个:1.000000000000010

根据您的描述,这个正则表达式应该可以执行您想要的操作:

^1[01]*(?:.[01]{0,31}1)?$

它寻找一个前导1,后面跟着一些二进制数字([01](,然后是一个可选的十进制部分,由一个小数点(.(,后面跟着最多31个二进制数字([01]{0,31}(和一个尾部1组成。

regex101 演示

如果要查找较长字符串中的数字,请将^$替换为断字(b(。

根据评论更新

如果您还想匹配值0.01.0(它们不符合原始标准(,您可以将它们作为regex:的替代项添加

^(?:[01].0?|1[01]*(?:.[01]{0,31}1)?)$

regex101 演示

我能想到的最短(也是最简单(的正则表达式是:

^1.[01]{0,31}?1$

这需要在开始处使用1.,在结束处使用1,并且还确保小数点后32位的限制(包括最后的强制1(。

在Regex101上可以看到。

相关内容

  • 没有找到相关文章

最新更新