从字符串中删除所有非数字字符; [^0-9] 与预期不匹配
我试图从字符串中删除所有内容,但只删除数字(0-9)。
我认为这会起作用..
echo preg_replace("[^0-9]","",'604-619-5135');
但它回响了“604-619-5135”。我错过了什么???
I'm trying to remove everything from a string but just numbers (0-9).
I thought this would work..
echo preg_replace("[^0-9]","",'604-619-5135');
But it echos "604-619-5135". What am I missing???
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
试试这个:
preg_replace 使用通常以
/
开头和结尾的 PCRE。Try this:
preg_replace uses PCREs which generally start and end with a
/
.这是给未来的开发者的,你也可以尝试一下。也很简单
This is for future developers, you can also try this. Simple too
您需要将模式括在分隔符中 - 通常使用斜杠 (/)。试试这个:
You would need to enclose the pattern in a delimiter - typically a slash (/) is used. Try this:
注意:如果您要过滤包含 - 符号的字符串,则不适用于此答案,因为 - 代表减号,并且不会被过滤和删除。 (如-2、-4等)。如果您仍想使用它,请删除 - 字符,然后再尝试。
(- + . e) 字符不会被此函数删除,
对于那些不想使用正则表达式的人来说,这是一种更实用的方法:
注意:它也适用于电话号码。
NOTE: if you are filtering strings containing - sign is not applicable to this answer because - stands for minus sign and is NOT filtered and removed. (like -2, -4 etc). If you still want to use it please remove - characters and then try.
(- + . e) characters are not stripped with this function
a much more practical way for those who do not want to use regex:
note: it works with phone numbers too.