dongxi7704 2010-03-06 21:58
浏览 117
已采纳

PHP正则表达式匹配Windows产品密钥

I am attempting (and failing) to write a PHP regex that will match a Windows product key in the form XXXXX-XXXXX-XXXXX-XXXXX-XXXXX (where X is an uppercase letter or a number).

I have come up with the following, but it is not doing quite what I expect (provided it actually can do what I expect!). I consider myself pretty well versed in PHP, but regexes are a particular weak point for me.

([A-Z1-9]{5})-([A-Z1-9]{5})-([A-Z1-9]{5})-([A-Z1-9]{5})-([A-Z1-9]{5})

What I am actually after is it to pass ABCDE-FGHIJ-KLMNO-PQRST-UVWXY but to fail ABCDE-FGHIJ-KLMNO-PQRST-UVWXYZ (notice the last block has 6 characters).

Bonus chatter: Yes, I know that not all letters are valid in a Windows product key, but the important bit is that it validates the text has been entered in the correct format.

  • 写回答

1条回答 默认 最新

  • drpmazn9021 2010-03-06 22:01
    关注

    All you're missing is position anchors in your regex. Currently, the regex will match that pattern anywhere in a string. The string could by "my product key is XXXXX-XXXXX-XXXXX-XXXXX-XXXXX and my name is Bob" and your regex would match. What you need is

    ^([A-Z1-9]{5})-([A-Z1-9]{5})-([A-Z1-9]{5})-([A-Z1-9]{5})-([A-Z1-9]{5})$
    

    The ^ matches only the beginning of the string and $ matches only the end.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch