我正在尝试构建一个匹配 8个字符字符串的 Perl 正则表达式,该字符串需要长度为8 至少一个字母AF (大写) AND * 至少一个十进制数字(0-9) *
我希望抓住正则表达式:
但不是:
现在我有
[\ dA-F] {8}
它允许以上所有内容。我不希望所有数字或所有字母的字段 - 只希望它与数字和字母匹配。
谢谢!
答案 0 :(得分:6)
您可以使用前瞻:
^(?=.*\d)(?=.*[A-F])[\dA-F]{8}$
(?= ... )
确保在继续匹配模式的其余部分之前提前匹配,
(?=.*\d)
基本上确保有一个数字匹配前瞻的任意数量的字符,在这种情况下从模式的开头。
(=.*[A-F])
的行为方式相同,因此它可以作为一个检查,以确保在任意数量的字符之后,A和F之间有一个字母。