猿问

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

目前,我正在使用[^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


眼眸繁星
浏览 121回答 2
2回答

慕村225694

要匹配以下二进制十进制格式1001, 10.01, .1001, 1001.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]+). 这两个正则表达式模式不允许字符串.匹配。

慕婉清6462132

^[01]+(.[01]+)?$我解释一下这个正则表达式的作用:^断言行首。[01]+必须至少出现一个 0 或 1。(.[01]+)然后,可能会出现一个点,后跟至少一个 0 或 1 。正如括号中所述,这也被视为第一个捕获组。?前一个元素必须出现零次或一次。这可以防止匹配超过 1 个点。$断言行尾。你可以在这里测试一下
随时随地看视频慕课网APP

相关分类

Java
我要回答