0

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

我不想在这个字符串中有任何空格或任何特殊字符。我尝试了一些在线可用的正则表达式,但并没有完全帮助我。

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

4

5 回答 5

5

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

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

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

于 2012-12-07T13:28:59.107 回答
3

直截了当

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

从 0 开始,然后是 0、1 或 2,然后是 0 到 6 之间的任意数量的数字。

于 2012-12-07T13:29:57.120 回答
1

我建议你看看这个教程

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

(?: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]*

所有这些用途都是字符类重复

请注意,当您将它们与Pattern.matches. 如果没有,请将它们包围^...$以确保在此模式之前或之后没有其他内容。

于 2012-12-07T13:29:45.497 回答
0
java.util.regex.Pattern.matches("0[0-2]{1}[3-6]{10}", "015453356543")    

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

于 2012-12-07T14:00:12.813 回答
-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]+就可以了。

于 2012-12-07T13:32:59.320 回答