正则表达式 - 以3个字母数字字符开头,其中包含至少一个字母和一个数字,并以字母

时间:2017-10-24 16:16:37

标签: regex

我试图制作符合以下条件的正则表达式:

  1. 4个字符。
  2. 前3个字符必须是字母数字字符,包括至少一个字母和一个数字。
  3. 最后一个字必须是一个字母。
  4. 所以我希望结果如下:

    • case1:abcd - >没有比赛
    • case2:234d - >没有比赛
    • case3:a23c - >匹配
    • case4:3abc - >匹配
    • case5:xy23 - >没有比赛

    我测试了以下与标准2匹配的正则表达式,但仍无法找到符合标准1和3的解决方案。

    ^(?!.*[^a-zA-Z0-9])(?=.*\d)(?=.*[a-zA-Z]).{3}$
    

    我试过这个但是在case2上失败了。

    ^(?!.*[^a-zA-Z0-9])(?=.*\d)(?=.*[a-zA-Z]).{3}[a-zA-Z]$
    

    如何结合这些标准?谢谢!

2 个答案:

答案 0 :(得分:1)

无需使用3或4个字符的复杂功能:

/^(?:[a-z0-9](?:[0-9][a-z]|[a-z][0-9])|[0-9][a-z]{2}|[a-z][0-9]{2})[a-z]$/i

/^(?:[a-z](?:[0-9][a-z0-9]|[a-z][0-9])|[0-9](?:[a-z][a-z0-9]|[0-9][a-z]))[a-z]$/i

答案 1 :(得分:1)

您可以使用

^(?=.{0,2}[0-9])(?=.{0,2}[a-zA-Z])[0-9a-zA-Z]{3}[a-zA-Z]$

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • (?=.{0,2}[0-9]) - 0到2个字符后必须有一个ASCII数字
  • (?=.{0,2}[a-zA-Z]) - 0到2个字符后必须有一个ASCII字母
  • [0-9a-zA-Z]{3} - 3个ASCII字母数字
  • [a-zA-Z] - ASCII字母
  • $ - 字符串结尾