我想取一个字符串,除了0-9之外的任何字符和 - (破折号)。
示例:
如果我有一个看起来像的字符串:
10 abc20-30
如何使此字符串返回
10-20-30
(除去数字和短划线之外的所有字符)
在preg_match或str_replace中是否有某种正则表达式?
答案 0 :(得分:12)
$result = preg_replace('/[^\d-]+/', '', $subject);
[^\d-]
匹配除数字或短划线之外的任何字符; +
表示“一个或多个”,因此相邻的字符将立即被替换。
答案 1 :(得分:2)
假设您的数据位于$ string中,这将删除除短划线和数字
之外的所有字符$string = preg_replace('/[^-0-9]/', null, $string);