【问题标题】:PHP Regex match sentences [duplicate]PHP正则表达式匹配句子[重复]
【发布时间】:2018-01-23 08:58:42
【问题描述】:

我正在尝试使用 PHP 和正则表达式来比较两个句子,如下所示:

$data = "I am a happy man with 2 kids";
if (preg_match('/^(?=.*I)(?=.*am)(?=.*happy)(?=.*with)(?=.*2)(?=.*kids)/i', $data)) {echo 'match';} else {echo 'not match';}

这似乎工作正常,但如果我将句子更改为:

$data = "I am a happy man with 20 kids";
if (preg_match('/^(?=.*I)(?=.*am)(?=.*happy)(?=.*with)(?=.*2)(?=.*kids)/i', $data)) {echo 'match';} else {echo 'not match';}

它仍然说匹配。问题是它不匹配确切的数字,只是检查另一个句子中是否有数字 2。

【问题讨论】:

    标签: php regex


    【解决方案1】:

    添加单词边界:

    $data = "I am a happy man with 20 kids";
    if (preg_match('/^(?=.*I)(?=.*am)(?=.*happy)(?=.*with)(?=.*\b2\b)(?=.*kids)/i', $data)) {
    //                                                 here ___^^ ^^
        echo 'match';
    } else {
        echo 'not match';
    }
    

    您可能还想在每个前瞻中添加,但正则表达式将变得不可编辑

    $data = "I am a happy man with 20 kids";
    if (preg_match('/^(?=.*\bI\b)(?=.*\bam\b)(?=.*\bhappy\b)(?=.*\bwith\b)(?=.*\b2\b)(?=.*\bkids\b)/i', $data)) {
        echo 'match';
    } else {
        echo 'not match';
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 2013-05-06
      • 1970-01-01
      • 2013-08-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多