PHP字符串删除除中心数字以外的所

时间:2011-03-09 00:42:52

标签: php regex

我有一个字符串“Mod.816-10 025”,我想删除除了816-10之外的所有内容。

条件:

  • 中心的数字始终为### - ##
  • 它可能不是3个数字 - 2个数字,但它总是空格数字破折号码空间

有人能帮助我吗?我尝试了5种不同的正则表达式但没有成功。

5 个答案:

答案 0 :(得分:1)

$text = "Mod. 816-10 025";
echo preg_replace('~.+ (\d+-\d+) .+~', '\1', $text);
// prints: 816-10

答案 1 :(得分:1)

<?php
# ...
$pattern = '/\d+-\d+/';
$matches = array();
preg_match($pattern, $input, $matches);

现在$matches[0]会有NUM-NUM个字符串。如果你想限制数字的大小(如果它一直在2到3位之间,那么模式可能类似于/\d{2,3}-\d{2,3}/

答案 2 :(得分:1)

如果条件始终存在,则不需要RegEx:

$string = explode(" ","Mod. 816-10 025");
$number = $string[1];

注意:使用php本机函数通常比强大的RegEx更快。

答案 3 :(得分:0)

$foo = "Mod. 816-10 025";
$bar = explode(" ", $foo);
$result = $bar[1];

所有这些答案都是正确的,这只是你究竟在寻找什么的问题。

答案 4 :(得分:0)

人们发布了关于preg_replace答案的帖子,但是除了空格外,他们都没有处理任何空白。如果您更喜欢preg_replace()preg_match(),我宁愿使用

preg_replace('/.*\s+(\d+-\d+)\s+.*/', '$1', $input);