下面是一个正则表达式,其中一个二进制数没有1,0直接跟在后面。
public static boolean isBin2(String bin2) {
Pattern regexBinary2 = Pattern.compile("(01*01)*");
Matcher matcher = regexBinary2.matcher(bin2);
return matcher.matches();
}
这是我在测试中使用的字符串:“一○一○一○一○”
运算式应检查如下:
允许使用10101010 --〉
不允许使用10010101 --〉
但是这个表达式总是返回false,即使二进制数是允许的,我也找不到原因。如果你能帮助我,那就太好了。
2条答案
按热度按时间huwehgph1#
下面是一个不使用lookaround的正则表达式:
它表示有效的输入以可选的0开始,后跟零个或多个
10
序列,并且可选地在结尾处有一个或多个1。这也将匹配空输入。如果应该拒绝空输入,则添加
\b
:在字符串文字中放置以下内容时,请确保对反斜杠进行转义:
jckbn6z72#
我永远不明白为什么要用正则表达式来完成这么简单的任务。
一般表示式:
"^(?!.*([01])\\1)[01]+"
- WTF?!)例如,每次调用函数时,都创建了
Pattern
和Matcher
的新示例,这肯定是不正确的。一个简单的循环可以在30秒内写出来,并完美地解决了这个任务。