找到第一组连续数字php正则表达式

时间:2014-09-22 20:50:58

标签: php regex numbers

我对php和正则表达式都很新,但我找不到解决方案。我不确定是否因为我不知道google的条款或者是什么,但这是我的问题:

我正在尝试使用PHP preg_match来查找字符串中的第一组连续数字。连续数字的意思是任何字符串,它是不间断的数字。

离。

'abc123abc'匹配:123 'ghdfk 1 23abc'匹配:1 '2475xyz'匹配:2475 'abc 456 789'符合:456

我一直在通过regular-expressions.info和google寻找类似于我的问题主题的条款,但它们似乎都返回搜索那些寻找特定长度重复数字的人。

我正在尝试尽可能地解析地址字符串,即使它可能会被输入。

到目前为止,我尝试过的无法解决的问题都在我的代码中:

<?php
#$addr = '12-3 3rd street'; #1st Test
$addr = 'RR 3 Box 8411'; #2nd Test
#$addr = '480jacksonrd'; #3rd Test
#$addr = 'N2626prociousmayselrd'; #4th Test

#list($our['StreetNum'], $our['StreetName']) = explode(" ", $our['Address'], 2);

#preg_match('/.+(?=[^0-9])/s',$addr,$Matches);
#preg_match('/[0-9]*/',$addr,$Matches);
preg_match('/(?<=\[^0-9]).+?(?=[^0-9])/s',$addr,$Matches);

$our['StreetNum'] = $Matches[0];

$our['StreetNum'] = preg_replace("/[^0-9]/", "", $our['StreetNum']);

echo ('First Match?: ' . $Matches[0] . '<br>'); #For Testing
echo ('Second Match?: ' . $Matches[1] . '<br>'); #For Testing
echo ('StrLen of StreetNum: ' . strlen($our['StreetNum']) . '<br>');
echo ('StrPos of StreetNum: ' . strpos($addr,$our['StreetNum']) . '<br>');

$our['StreetName'] = substr($addr, strlen($our['StreetNum'])+strpos($addr,$our['StreetNum']));

echo ('Street Original: ' . $addr . '<br>');
echo ('Street Number: ' . $our['StreetNum'] . '<br>');
echo ('Street Name: ' . $our['StreetName'] . '<br>');
?>

非常感谢任何帮助或指示。

2 个答案:

答案 0 :(得分:3)

/[0-9]+/ preg_match就足够了。 您搜索任何1个或更多数字。

preg_match('/[0-9]+/', $addr, $Matches)

或者

preg_match('/\d+/', $addr, $Matches)

答案 1 :(得分:2)

你过度思考。试试这个:

if preg_match('/\d+/', $my_string, $matches)
    return $matches[0];

您只需要搜索数字,然后返回匹配。