加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

preg_match中的正则表达式和模式 – PHP适合123-23-345

发布时间:2020-12-14 02:30:25 所属栏目:百科 来源:网络整理
导读:我不是很擅长找到正确的正则表达式的自动化,生成不同的表达式,但是当这涉及 PHP的脚本时,它变得很麻烦.我无法证明自己能够在preg_match中编写一个“适合”表达式的模式,如:123-23-345 … 123-34-456 …. 12-234-56 …..它应该是3组数字,其中每个组,从左到右
我不是很擅长找到正确的正则表达式的自动化,生成不同的表达式,但是当这涉及 PHP的脚本时,它变得很麻烦.我无法证明自己能够在preg_match中编写一个“适合”表达式的模式,如:123-23-345 … 123-34-456 …. 12-234-56 …..它应该是3组数字,其中每个组,从左到右分类,并且每个下一组都没有比前一组的最大数字大的数字.这个:123-23-456会错,因为23中的2比123中的3小.123-43-45再次出错,因为43应该是34 ……

这应该可以帮助我验证可能只包含该类型内容的字段.它应该是正则表达式验证而不是解析,拆分的函数…

好吧,我认为不会有正则表达式的解决方案.
所以在这里我编写了你需要的功能:
function isValidDigitExpression($string) {
    $flag = preg_match('/^(d+)-(d+)-(d+)$/',$string,$matches);
    if (!$flag) return false;

    // Check correct sorting by splitting digit string to array
    for ($i = 1; $i <= 3; $i++ ) {
         $block[$i] = str_split($matches[$i]);
         $compare = $block[$i];
         sort($compare);
         if ($compare != $block[$i]) return false;
    }

    // Compare Min and Max digits of neighboring digit blocks
    return (max($block[1]) <= min($block[2]) and max($block[2]) <= min($block[3]));
}

$string = "123-34-356"; // Failure,because 3 < 4 comparing Block 2 and Block 3
echo isValidDigitExpression($string) ? "SUCCESS" : "FAILURE";

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读