为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用正则表达式验证二进制分数?

如何使用正则表达式验证二进制分数?

眼眸繁星 2023-12-13 15:01:28
目前,我正在使用[^0-1]Matcher 类中的 find() 使用正则表达式将二进制值输入限制为仅 1 和 0。String binaryValue = "10", strRegex = "[^0-1]";Pattern p = Pattern.compile(strRegex);Matcher m = p.matcher(binaryValue);if(m.find()){    System.out.println("invalid");}else{    System.out.println("valid");}我希望在我的代码中发生的是:如果 binaryValue 仅包含 0 和 1 的组合以及可选的一个点(小数点),则打印“valid”有效格式示例:1001、10.01、.1001、1001.0
查看完整描述

2 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

要匹配以下二进制十进制格式100110.01.10011001.0,您可以使用以下命令:

请参阅此处使用的正则表达式

^(?:[01]+|[01]*\.[01]+)$

这是如何运作的:

  • ^断言位置位于行的开头

  • (?:[01]+|[01]*\.[01]+)匹配以下选项之一

    • 选项 1:[01]+匹配任何二进制数字(0 或 1)一次或多次

    • 选项 2:[01]*\.[01]+匹配任意二进制数字(0 或 1)零次或多次,后跟原义点字符.,然后匹配一个或多个二进制数字(0 或 1)一次或多次。

  • $断言位置位于行尾

请注意,您需要在 Java 中转义反斜杠^(?:[01]+|[01]*\\.[01]+)$

另请注意,这不会匹配0.(或类似的1.11.等),因为这种情况未明确包含在问题中。为了匹配这种情况,您可以使用(?:[01]+\.?|[01]*\.[01]+). 这两个正则表达式模式不允许字符串.匹配。


查看完整回答
反对 回复 2023-12-13
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

^[01]+(.[01]+)?$

我解释一下这个正则表达式的作用:

  • ^断言行首。

  • [01]+必须至少出现一个 0 或 1。

  • (.[01]+)然后,可能会出现一个点,后跟至少一个 0 或 1 。正如括号中所述,这也被视为第一个捕获组。

  • 前一个元素必须出现零次或一次。这可以防止匹配超过 1 个点。

  • $断言行尾。


你可以在这里测试一下


查看完整回答
反对 回复 2023-12-13
  • 2 回答
  • 0 关注
  • 54 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信