preg替换为返回空字符串的正则表达式字符列表

时间:2014-08-02 12:20:40

标签: php regex

这应该是基本的,但我没有得到它。

我希望echo preg_replace("/[\s.()-_]/", '', '(654)-098 98 .435.45');给我一个只包含没有空格的数字的字符串。相反,我得到一个空字符串。

我错过了什么?

我制作了正则表达式(http://regex101.com/r/qO3nL9/1)并且它看起来是正确的。

直播:http://ideone.com/rlGKBa

2 个答案:

答案 0 :(得分:1)

只需将-符号放在字符类的最后一个,以便它与文字-符号匹配。在您的模式中,字符类中的)-_匹配)_范围内的所有字符(即-表示范围不是文字-符号)。数字也在此范围内,因此也被删除。查看this页中)_范围内的字符。

[\s.()_-]

你的代码应该是,

echo preg_replace("/[\s.()_-]/", '', '(654)-098 98 .435.45');

DEMO

答案 1 :(得分:1)

preg_replace('/\D/', '', '(654)-098 98 .435.45');