1

我有一个验证 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 位,现在在我的字符串中前 2 位是强制性的。我的字符串有 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 部分,并且两个部分都应按照上述验证进行验证。
  • 如果字符串包含第三部分也意味着它的长度应该是 8 并且它包括第一部分和第二部分,那么它将根据上述条件强制验证第一、第二和第三部分
  • 如果字符串包含第 4 部分也意味着它的长度为 10 并且它包括第 1、第 2 和第 3 部分,那么它也将根据上述条件强制验证第 1、2、3 和第
  • 像上面一样继续到第 6 部分。

请帮助我,让我知道在我当前的 reg ex 实施中我必须改变什么

谢谢

4

2 回答 2

1

编辑:针对已编辑问题中的规范:

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

^(0[0-1](?:[0-9]{4}(?:0[02](?:0[014](?:0[0-2](?:0[0-2])?)?)?)?)?)$
于 2012-12-26T07:09:29.433 回答
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 个符号的字符串,因为您没有使用 ^ 和 $

于 2012-12-26T07:53:16.080 回答