2

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

我希望正则表达式能够捕获:

  • A13B4D90
  • 13CF928B
  • A2F1C3D5

但不是:

  • 1392857
  • 2962219
  • 3945580
  • ASFLEAN
  • -MLQORNA

现在我有

[\dA-F]{8}

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

谢谢!

4

1 回答 1

6

您可以使用前瞻:

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

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

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

(=.*[A-F])作用相同,因此它充当检查以确保 A 和 F 在任意数量的字符之后的某处前面有一个字母。

于 2013-09-13T20:48:08.943 回答