我想检查三个数字1,3,5是否存在于字符串中......或2,7,9
例如: 字符串18637775被接受 字符串25553373349被接受 字符串123被拒绝 接受字符串5631
那我怎么能用正则表达式写这个呢!
I got this: \\d*1+\\d*3+\\d*5+\\d*
...但这并不意味着字符串5631不被接受。如何使1,3,5被接受为他们的存在而不是他们出现的顺序。
答案 0 :(得分:0)
你需要像这样使用前瞻:
^((?=[^1]*1)(?=[^3]*3)(?=[^5]*5)|(?=[^2]*2)(?=[^7]*7)(?=[^9]*9))\\d+$
答案 1 :(得分:0)
我已经在Perl中编写并尝试了以下正则表达式,它会传递您指定的所有测试用例。希望,同样适用于Java。
(?=.*5.*)(?=.*3.*)(?=.*1.*)|(?=.*2.*)(?=.*7.*)(?=.*9.*)
答案 2 :(得分:0)
除了评论之外,还要提供答案,以便清楚地显示代码。
当你运行下面的Perl脚本时,你会得到“123不匹配”作为输出。
my $a = "123";
if($a =~ /(?=.*5.*)(?=.*3.*)(?=.*1.*)|(?=.*2.*)(?=.*7.*)(?=.*9.*)/)
{
print "$a matches";
}
else
{
print "$a does not match";
}