perl正则表达式为{8}字符串,带有十进制数字和字母,没有别的

bw1*_*984 2 regex string perl

我试图建立一个Perl的,一个正则表达式匹配8个字符,需要一个字符串的确切长度为8包括至少一个字母AF(大写)*至少一个十进制数(0-9)*

我想要正则表达式:

  • A13B4D90
  • 13CF928B
  • A2F1C3D5

但不是:

  • 1392857
  • 2962219
  • 3945580
  • ASFLEAN
  • -MLQORNA

现在我有

[\ DA-F] {8}

并且它允许以上所有.我不希望所有数字或所有字母的字段 - 只希望它与数字和字母匹配.

谢谢!

Jer*_*rry 6

您可以使用前瞻:

^(?=.*\d)(?=.*[A-F])[\dA-F]{8}$
Run Code Online (Sandbox Code Playgroud)

(?= ... ) 在继续匹配其余模式之前确保前面有匹配,

(?=.*\d) 基本上确保有一个数字匹配前瞻的任意数量的字符,在这种情况下从模式的开始.

(=.*[A-F]) 以相同的方式行事,因此它起到检查的作用,以确保在任意数量的字符之后的某个地方A和F之间有一个字母.