仅返回0-9并从字符串中删除

时间:2010-12-05 08:30:49

标签: php regex string

我想取一个字符串,除了0-9之外的任何字符和 - (破折号)。

示例:

如果我有一个看起来像的字符串:

  

10 abc20-30

如何使此字符串返回

  

10-20-30

(除去数字和短划线之外的所有字符)

在preg_match或str_replace中是否有某种正则表达式?

2 个答案:

答案 0 :(得分:12)

$result = preg_replace('/[^\d-]+/', '', $subject);

[^\d-]匹配除数字或短划线之外的任何字符; +表示“一个或多个”,因此相邻的字符将立即被替换。

答案 1 :(得分:2)

假设您的数据位于$ string中,这将删除除短划线和数字

之外的所有字符
$string = preg_replace('/[^-0-9]/', null, $string);