【问题标题】:preg_match returns 1 when searching for alpha charaters in a numeric stringpreg_match 在数字字符串中搜索字母字符时返回 1
【发布时间】:2012-11-15 08:06:15
【问题描述】:

我有以下代码 sn-p 不知道为什么这样的正则表达式匹配:

<?php

$string = "0123456789";

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

}

else {
    echo "not match";

}

?>

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

【问题讨论】:

    标签: php regex preg-match


    【解决方案1】:
    if(preg_match('/[a-zA-Z]/', $string) === 1) {
        echo "match";
    }
    else {
        echo "not match";
    

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

    【讨论】:

    • 感谢您的解释。我一开始就错了:)
    【解决方案2】:

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

    /[a-zA-Z]+/
    

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

    【讨论】:

      【解决方案3】:

      试试这个

      /^[A-z]+$/
      

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

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

      【讨论】:

      • A-z 匹配 _ 和其他一些字符。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      相关资源
      最近更新 更多