我在PHP中使用带有perl风格的正则表达式和preg_match
函数。我想验证一个正好是10个字符的密钥,使用大写字母字符或数字。
我有
preg_match( '/[^A-Z0-9]/', $key);
它在有效字符旁边找到无效字符。在我有限的知识范围内,我尝试了
preg_match( '/[^A-Z0-9]{10}$/', $key);
它与我的所有测试字符串相匹配,甚至是无效的字符串。
如何指定此正则表达式?
您放错了锚定字符串开头的^
字符的位置。/[^A-Z0-9]{10}$/
将匹配所有以10个非大写字母和数字字符结尾的文件。
正确的RE是:
preg_match( '/^[A-Z0-9]{10}$/', $key);
正则表达式的解释:
^
-从字符串开头开始匹配[
-字符类的开头,字符应该与这些匹配。如果在该[
之后直接找到^
,则否定匹配A-Z
-大写字母0-9
-数字
]
-字符类的末尾{10}
-与上一个字符类匹配10次
$
-匹配字符串直到结束