我有以下代码片段,我不知道为什么这样的正则表达式匹配:
<?php
$string = "0123456789";
if(preg_match('/[a-zA-Z]*/', $string) === 1) {
echo "match";
}
else {
echo "not match";
}
?>
运行脚本时,它总是返回“匹配”。我希望它打印出“不匹配”,因为$ string变量中没有字母字符。有什么想法吗?
答案 0 :(得分:2)
if(preg_match('/[a-zA-Z]/', $string) === 1) {
echo "match";
}
else {
echo "not match";
*
表示0或更多,因此它匹配字符串开头的0个字母。你想匹配1,所以摆脱*
。
答案 1 :(得分:2)
匹配,因为您使用*
量词。如果使用:
/[a-zA-Z]+/
这是因为/[a-zA-Z]*/
也会匹配0次出现。
答案 2 :(得分:1)
试试这个
/^[A-z]+$/
[A-z]将匹配所有字母(小写和大写)。
^和$将确保除了这些字母表之外什么都不匹配。