繁体   English   中英

尺寸的preg_match

[英]preg_match for dimension

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

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

任何人都可以帮助我找到正则表达式的问题。

试试这个代码:

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

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

整个任选接着进行一个或多个空格\\ S *,随后任选地随后一个或多个空格\\ S *x字符。

最后,我们添加mm链。

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

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

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

如果毫米仅在末端,您也可以这样尝试,并重复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!";
}

通过使用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
        )

)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM