0

我有以下代码片段,但我不知道为什么这样的正则表达式匹配:

<?php

$string = "0123456789";

if(preg_match('/[a-zA-Z]*/', $string) === 1) {
    echo "match";

}

else {
    echo "not match";

}

?>

当脚本运行时,它总是返回“match”。我希望它打印出“不匹配”,因为 $string 变量中没有字母字符。有任何想法吗?

4

3 回答 3

2
if(preg_match('/[a-zA-Z]/', $string) === 1) {
    echo "match";
}
else {
    echo "not match";

*表示 0 或更多,因此它匹配字符串开头的 0 个字母。你想匹配 1,所以去掉*.

于 2012-11-15T08:09:05.203 回答
2

它匹配,因为您使用*量词。如果您使用,它将不匹配:

/[a-zA-Z]+/

这是因为/[a-zA-Z]*/也将匹配 0 次出现。

于 2012-11-15T08:09:17.440 回答
2

尝试这个

/^[A-z]+$/

[Az] 将匹配所有字母(小写和大写)。

^ 和 $ 将确保只匹配这些字母。

于 2012-11-15T08:10:51.767 回答