如何检查字符串中是否存在某些数字

时间:2014-01-25 14:28:14

标签: java regex

我想检查三个数字1,3,5是否存在于字符串中......或2,7,9

例如: 字符串18637775被接受 字符串25553373349被接受 字符串123被拒绝 接受字符串5631

那我怎么能用正则表达式写这个呢!

I got this: \\d*1+\\d*3+\\d*5+\\d* 

...但这并不意味着字符串5631不被接受。如何使1,3,5被接受为他们的存在而不是他们出现的顺序。

3 个答案:

答案 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";
}