Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在数字字符串中搜索字母字符时,preg_match返回1_Php_Regex_Preg Match - Fatal编程技术网

Php 在数字字符串中搜索字母字符时,preg_match返回1

Php 在数字字符串中搜索字母字符时,preg_match返回1,php,regex,preg-match,Php,Regex,Preg Match,我有以下代码片段,我不知道为什么这样的正则表达式匹配: <?php $string = "0123456789"; if(preg_match('/[a-zA-Z]*/', $string) === 1) { echo "match"; } else { echo "not match"; } ?> 当脚本运行时,它总是返回“match”。我希望它打印出“not match”,因为$string变量中没有alpha字符。有什么想法吗 if(preg_

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

<?php

$string = "0123456789";

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

}

else {
    echo "not match";

}

?>

当脚本运行时,它总是返回“match”。我希望它打印出“not match”,因为$string变量中没有alpha字符。有什么想法吗

if(preg_match('/[a-zA-Z]/', $string) === 1) {
    echo "match";
}
else {
    echo "not match";
*
表示0或更多,因此它匹配字符串开头的0个字母。您希望匹配1,因此请去掉
*


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

,因为你使用了
*
量词。如果使用以下选项,则不匹配:

/[a-zA-Z]+/

这是因为
/[a-zA-Z]*/
也将匹配0个事件。

它匹配,因为您使用了
*
量词。如果使用以下选项,则不匹配:

/[a-zA-Z]+/
这是因为
/[a-zA-Z]*/
也将匹配0个事件。

试试这个

/^[A-z]+$/
[A-z]将匹配所有字母(小写和大写)

^$将确保除了这些字母表之外,没有任何东西是匹配的。

试试这个

/^[A-z]+$/
[A-z]将匹配所有字母(小写和大写)


^$将确保除了这些字母表之外,没有其他匹配项。

谢谢您的解释。我一开始就错了:)谢谢你的解释。我一开始就错了:)A-z匹配u和其他一些字符。A-z匹配u和其他一些字符。