用于字母数字的java中的正则表达式

时间:2012-12-07 13:27:14

标签: java regex

我有一个像010000200000, 000000200000, 020000200000这样的字符串。我想为此创建正则表达式,并想检查前2位数字仅为01,00& 02.其余的数字应仅来自[0-6]。

我不希望此字符串中有任何空格或任何特殊字符。我尝试了一些在线提供的正则表达式,但并没有完全帮助我。

如果有人有任何想法,请帮助。

5 个答案:

答案 0 :(得分:5)

这应该根据您的要求解析它们。

java.util.regex.Pattern.matches("0[012][0-6]+", "010000200000");

第一个字符始终为0,后跟1个字符,即0,1或2,后跟0-6范围内的至少1个字符。

答案 1 :(得分:3)

直截了当

"0[012][0-6]*"

从0开始,接下来是0,1或2,以及0到6之间的任何数字位数。

答案 2 :(得分:1)

我建议您查看this tutorial

如果您的字符串的位数和段数是固定的,您可以使用

(?:0[012][0-6]{10}, ){2}0[012][0-6]{10}

如果不是,只需

(?:0[012][0-6]*, )*0[012][0-6]*

如果您实际上意味着给定的示例是三个单独的字符串,那么它就更容易了:

0[012][0-6]{10}

0[012][0-6]*

所有这些用途都是character classesrepetition

请注意,只有在Pattern.matches使用它们时才会按照您的喜好行事。如果没有,请用^...$包围它们,以确保此模式前面或之后没有其他内容。

答案 3 :(得分:0)

java.util.regex.Pattern.matches("0[0-2]{1}[3-6]{10}", "015453356543")    

这正是需要正则表达式...是吗?

答案 4 :(得分:-1)

0[0-2][0-6][0-6][0-6][0-6][0-6][0-6][0-6][0-6][0-6][0-6]怎么样?显然我猜你需要一个12个字符的固定长度字符串,否则0[0-2][0-6]+就可以了。