我正在尝试(但失败)编写与Windows产品密钥相匹配的PHP正则表达式,格式为XXXXX-XXXXX-XXXXX-XXXXX-XXXXX(其中X是大写字母或数字)。

我提出了以下建议,但它并没有达到我的期望(只要它确实可以实现我的期望!)。我认为自己非常精通PHP,但是正则表达式对我来说是一个特别的弱点。

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


我实际上要经过的是传递ABCDE-FGHIJ-KLMNO-PQRST-UVWXY但失败的ABCDE-FGHIJ-KLMNO-PQRST-UVWXYZ(注意最后一个块有6个字符)。

chat奖:是的,我知道Windows产品密钥中并非所有字母都有效,但是重要的一点是它可以验证是否以正确的格式输入了文本。

最佳答案

您所缺少的只是正则表达式中的位置锚。当前,正则表达式将在字符串中的任何位置匹配该模式。该字符串可以是“我的产品密钥是XXXXX-XXXXX-XXXXX-XXXXX-XXXXX,我的名字是Bob”,并且您的正则表达式将匹配。您需要的是

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


^仅匹配字符串的开头,而$仅匹配字符串的结尾。

关于php - PHP正则表达式以匹配Windows产品 key ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2394238/

10-12 19:29