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