我正在尝试(但失败)编写与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/