尺寸为

时间:2018-05-03 10:23:58

标签: php regex

我试图在三维测量中获得价值,如 7.30 x 7.00 x 4.87 mm 使用pre_match php函数。

这是ree @([0-9\.]+) - ([0-9\.]+) mm x ([0-9\.]+) mm@

任何人都可以帮我找到正则表达式的错误。

3 个答案:

答案 0 :(得分:0)

试试这段代码:

preg_match("#[\d]+(\.[\d]+)?\s*x\s*[\d]+(\.[\d]+)?\s*x\s*[\d]+(\.[\d]+)?\s*mm#",$variable);

维度值是浮点数,即由一个或多个数字组成,后跟 [\ d] + 可选一个点和一个或多个数字(。[\ d] +)?示例: 1.45 2 ,...

整个后面跟一个或多个空格 \ s * 后跟一个 x 字符,后跟一个或多个空格 \ s *

最后,我们添加 mm 链。

答案 1 :(得分:0)

我认为-应该是x,并且您尝试匹配的第一个mm不存在,因此您可以删除它:

([0-9\.]+) x ([0-9\.]+) x ([0-9\.]+) mm

请注意,[0-9\.]+也可以匹配....

如果mm仅在结尾处,您也可以这样尝试并重复7.30 x模式2次并在结尾处匹配4.87 mm

您可以在左侧和右侧使用单词边界\b

\b(?:[0-9]+\.[0-9]+ x ){2}[0-9]+\.[0-9]+ mm\b

$re = '@\b(?:[0-9]+\.[0-9]+ x ){2}[0-9]+\.[0-9]+ mm\b@';
$str = 'This is a test 7.30 x 7.00 x 4.87 mm test';
if (preg_match($re, $str, $matches)) {
    echo "Match!";
}

答案 2 :(得分:0)

使用preg_match_all()

可以更准确,更优雅
preg_match_all('/\d+(?:\.\d+)?/', $input, $matches);

if(count($matches[0]) == 3){
 echo 'match!';
}

$ matches [0]将输出数组中的所有数字

Array
(
    [0] => Array
        (
            [0] => 2.32
            [1] => 1
            [2] => 3.455
        )

)