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

时间:2013-09-13 20:46:23

标签: regex string perl

我正在尝试构建一个匹配 8个字符字符串的 Perl 正则表达式,该字符串需要长度为8 至少一个字母AF (大写) AND * 至少一个十进制数字(0-9) *

我希望抓住正则表达式:

  • A13B4D90
  • 13CF928B
  • A2F1C3D5

但不是:

  • 1392857
  • 2962219
  • 3945580
  • ASFLEAN
  • -MLQORNA

现在我有

[\ dA-F] {8}

它允许以上所有内容。我不希望所有数字或所有字母的字段 - 只希望它与数字和字母匹配。

谢谢!

1 个答案:

答案 0 :(得分:6)

您可以使用前瞻:

^(?=.*\d)(?=.*[A-F])[\dA-F]{8}$

(?= ... )确保在继续匹配模式的其余部分之前提前匹配,

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

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