从字符串中仅返回0-9和破折号。

6
我想处理一个字符串,将除0-9和-(短划线)以外的所有字符去掉。
例如: 如果我有一个字符串看起来像这样:10-abc20-30 如何使这个字符串返回:10-20-30 (除了数字和短划线以外,删除所有字符)
在preg_match或str_replace中使用某种正则表达式吗?
2个回答

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

[^\d-] 匹配除数字和破折号外的任何字符;+ 表示其中之一或多个,因此相邻的字符将同时被替换。


2
假设你的数据在$string中,以下代码会删除除破折号和数字以外的所有字符。
$string = preg_replace('/[^-0-9]/', null, $string);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接