如何验证正则表达式中的可选子字符串

时间:2012-12-26 06:53:34

标签: java android regex

我有一个正则表达式,可以验证14个字符长度。 但现在我想验证它可以乘以2长度。

我当前的正则表达式为"(0[0-1][0-9][0-9][0-9][0-9]0[0-2]0[0-4]0[0-2]0[0-2])"

它只接受14个长度字符串

match : `00000002000102 00000002000101`
do not match : `00 , 0000 , 00000200,`

我想接受上面的这些也不匹配字符串。

我在下面解释了我想做什么

已编辑:

在这里,我将再次解释我的要求

请参阅我的字符串长度为14位,现在在我的字符串中,前两位数是强制性的。 我的String有6个不同的验证部分,我将在下面提到。

first part would be  : 00 or 01 only  : Sting length should be 2 only
second part would be : 0000-9999 any value between this.    : Sting length should be 6 only
third part would be  : 00 or 02 only             : Sting length should be 8 only
fourth part would be : 00 or 01 or 04 only even not 03.: Sting length should be 10 only
fifth part would be  : 00 or 01 or 02            : Sting length should be 12 only
sixth part would be  : 00 or 01 or 02            : Sting length should be 14 only
  • 所以这里我的输入字符串包含必修的第一部分。
  • 如果它包含第2部分,它将是第1和第2强制 两部分和两部分都应按上述验证进行验证。
  • 如果string包含第3部分也意味着它的长度应为8及其 包括第一和第二部分然后它将强制验证 第1部分,第2部分和第3部分符合上述条件
  • 如果字符串包含第4部分也表示其长度为10且包括 第一,第二和第三部分然后它将强制验证 第1,第2,第3部分和第4部分也符合上述条件
  • 同上,继续到第6部分。

请帮助我,让我知道我目前的注册实施中需要改变的内容

由于

2 个答案:

答案 0 :(得分:1)

编辑:响应编辑过的问题中的规范:

像这样的东西;现在它真的是你的功课;)

^(0[0-1](?:[0-9]{4}(?:0[02](?:0[014](?:0[0-2](?:0[0-2])?)?)?)?)?)$

答案 1 :(得分:0)

您对第四组的定义

  

第四部分是:00或01或04,即使不是03。

目前尚不清楚。你在这需要02吗?

第四部分允许02

/^((0[01])|(0[01][0-9]{4})|(0[01][0-9]{4}0[02])|(0[01][0-9]{4}0[02]0[0124])|(0[01][0-9]{4}0[02]0[0124]0[0-2])|(0[01][0-9]{4}0[02]0[0124]0[0-2]0[0-2]))$/

第二部分不允许使用02

/^((0[01])|(0[01][0-9]{4})|(0[01][0-9]{4}0[02])|(0[01][0-9]{4}0[02]0[014])|(0[01][0-9]{4}0[02]0[014]0[0-2])|(0[01][0-9]{4}0[02]0[014]0[0-2]0[0-2]))$/

请注意您的初始模式接受的字符串超过14个符号,因为您没有使用^和$