我想要一个表达式,它匹配任意顺序的7位数字和5个字母的字符串。
示例:
123abcdf4567
f541hg342gf3
答案 0 :(得分:2)
它必须是正则表达式吗?我使用
length($_) == 12 && /^(?:\D*\d){7}/ && /^(?:\PL*\pL){5}/
这将检查字符串是否包含12个字符,其中至少7个是数字,至少5个是字母。因此,只有当字符串包含7位数字和5个字母时才会成功。
答案 1 :(得分:1)
可能有一些正则表达式扩展可以做到这一点,但只是计算字母和数字并确保你有正确的值要简单得多。
我怀疑你要求的模式不是常规的"虽然。
答案 2 :(得分:1)
首先 - 我同意所做的评论 - 尝试改进你的" questionaskingskills"直到下一次;)
第二 - 你可以通过两个积极的前瞻来做到这一点。像这样:
^(?=(?:\pL*\d){7}\pL*$)(?=(?:\d*\pL){5}\d*$)
第一个正面展望(由(?=
和)
包围的正则表达式模式 - 测试任意数量的非数字+ a 数字的模式,重复7它可以跟随任意数量的非数字。
然后,第二次正面展望测试any number of non letters
+ a 字母的模式。这应该重复5次。随后可能会出现任意数量的非字母。
(为了说明我在演示结束时添加了实际匹配(.*
)。这不是必需的。)