我需要将长度为5的数字(例如“11111”)分成两部分,空格如“111 11”。
我的代码中缺少什么?
$zip = "11111";
$res = preg_replace('/^\d{3}[ ]?\d{2}/', '$0 $2', $zip);
echo $zip; // returns 11111
echo $res; // returns 11111
非常感谢
感谢所有人,我错过了简单的括号() 我需要使用这个有点困难的方法:)
答案 0 :(得分:1)
你真的需要一个正则表达式吗?如果它总是一个五位数字,那么很容易将它分开并在必要时重新构建它。
echo sprintf("%s %s", substr($zip, 0, 3), substr($zip, -2));
答案 1 :(得分:0)
John Conde的答案很棒,但因为你的问题是:
我的代码中缺少什么?
我的回答是你必须用括号捕捉群组:
$zip = "11111";
$res = preg_replace('/^(\d{3})[ ]?(\d{2})/', '$1 $2', $zip);
echo $zip;
echo PHP_EOL;
echo $res;
答案 2 :(得分:0)
为什么使用正则表达式来做这么简单的事情?
$zip = '11111';
$first_part = substr($zip, 0, 3);
$last_part = substr($zip, 3);
至于你的正则表达式,你没有使用捕获组((...)
),因此永远不会定义$ 0 / $ 2.