需要一个验证不同大小的字符串的正则表达式

时间:2011-08-03 11:42:22

标签: regex

我需要正则表达式来验证字符串:

  • 有4或5个字母
  • 然后是一个下划线
  • 然后是I或O(只有其中一个)
  • 然后是一个下划线
  • 然后是4位数字

现在在这里它进一步复杂化。 毕竟它可能有:

  • 另一个下划线
  • 然后是4位数字。

最后所有这些都必须有效:

ASDF_I_0002

ASDFG_O_0003_0324

ASDF_O_0001

ASDF_I_0001_0001

谢谢。

3 个答案:

答案 0 :(得分:5)

  • 有4或5个字母(A-Z)

    [A-Z]{4,5}
    
  • 然后是一个下划线

    [A-Z]{4,5}_
    
  • 然后是I或O(只有其中一个)

    [A-Z]{4,5}_[IO]
    
  • 然后是一个下划线

    [A-Z]{4,5}_[IO]_
    
  • 然后是4位数字

    [A-Z]{4,5}_[IO]_[0-9]{4}
    

毕竟可能有

    [A-Z]{4,5}_[IO]_[0-9]{4}()?
  • 另一个下划线

    [A-Z]{4,5}_[IO]_[0-9]{4}(_)?
    
  • 然后是4位数字。

    [A-Z]{4,5}_[IO]_[0-9]{4}(_[0-9]{4})?
    

你已经很好地列出了你的要求,我想知道从他们那里制作正则表达式的问题。 ;)

答案 1 :(得分:1)

有4或5个字母

  • \ W {4-5}

然后是一个下划线

  • _

然后是I或O(只有其中一个)

  • [IO]

然后是一个下划线

  • _

然后是4位数字

  • \ d {4}

全部放在一起

\w{4-5}_[IO]_\d{4}

虽然要匹配所有测试用例,但您需要扩展此

\w{4-5}_[IO](_\d{4}){1,2}

答案 2 :(得分:1)

试试这个

^\w{4,5}_(I|O)_\d{4}(_\d{4})?$

编辑:与其评估的其他解决方案相比; - )

^\w{4,5}_[IO](_\d{4}){1,2}$