从字符串中删除所有非数字字符; [^0-9] 与预期不匹配

发布于 2024-11-18 23:06:13 字数 164 浏览 9 评论 0原文

我试图从字符串中删除所有内容,但只删除数字(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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

套路撩心 2024-11-25 23:06:13

试试这个:

preg_replace('/[^0-9]/', '', '604-619-5135');

preg_replace 使用通常以 / 开头和结尾的 PCRE。

Try this:

preg_replace('/[^0-9]/', '', '604-619-5135');

preg_replace uses PCREs which generally start and end with a /.

何以畏孤独 2024-11-25 23:06:13

这是给未来的开发者的,你也可以尝试一下。也很简单

echo preg_replace('/\D/', '', '604-619-5135');

This is for future developers, you can also try this. Simple too

echo preg_replace('/\D/', '', '604-619-5135');
清晰传感 2024-11-25 23:06:13

您需要将模式括在分隔符中 - 通常使用斜杠 (/)。试试这个:

echo preg_replace("/[^0-9]/","",'604-619-5135');

You would need to enclose the pattern in a delimiter - typically a slash (/) is used. Try this:

echo preg_replace("/[^0-9]/","",'604-619-5135');
黯淡〆 2024-11-25 23:06:13

注意:如果您要过滤包含 - 符号的字符串,则不适用于此答案,因为 - 代表减号,并且不会被过滤和删除。 (如-2、-4等)。如果您仍想使用它,请删除 - 字符,然后再尝试。

(- + . e) 字符不会被此函数删除,

对于那些不想使用正则表达式的人来说,这是一种更实用的方法:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

注意:它也适用于电话号码。

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:

$data = filter_var($data, FILTER_SANITIZE_NUMBER_INT);

note: it works with phone numbers too.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文