标签: php regex
这应该是基本的,但我没有得到它。
我希望echo preg_replace("/[\s.()-_]/", '', '(654)-098 98 .435.45');给我一个只包含没有空格的数字的字符串。相反,我得到一个空字符串。
echo preg_replace("/[\s.()-_]/", '', '(654)-098 98 .435.45');
我错过了什么?
我制作了正则表达式(http://regex101.com/r/qO3nL9/1)并且它看起来是正确的。
直播:http://ideone.com/rlGKBa
答案 0 :(得分:1)
只需将-符号放在字符类的最后一个,以便它与文字-符号匹配。在您的模式中,字符类中的)-_匹配)到_范围内的所有字符(即-表示范围不是文字-符号)。数字也在此范围内,因此也被删除。查看this页中)至_范围内的字符。
-
)-_
)
_
[\s.()_-]
你的代码应该是,
echo preg_replace("/[\s.()_-]/", '', '(654)-098 98 .435.45');
DEMO
答案 1 :(得分:1)
preg_replace('/\D/', '', '(654)-098 98 .435.45');