preg_replace'/ [^ 0-9] /'或'/ \ D /'或'/ \ d /'之间的区别?

时间:2014-10-16 14:20:22

标签: php preg-replace

正则表达式'/ [^ 0-9] /''/ \ D /''/ \ d /'之间的区别是什么?使用单引号双引号会更好吗?

$number = '123asd456.789,123a4!"·$%&/()=/*-+<br>';

preg_replace('/\D/', '', $number) = 1234567891234
preg_replace('/\d/', '', $number) = asd.,a!"·$%&/()=/*-+
preg_replace('/[^0-9]+/', '', $number) = 1234567891234

当然我做了一些测试,这些都是我的结果,我只是想更多地说明每个正则表达式。哪个性能更好?

谢谢!

2 个答案:

答案 0 :(得分:5)

\D表示除数字之外的任何内容。它的别名为[^0-9] \d表示任何数字。它的别名是[0-9](没有^"'之间没有区别,因为您没有使用内部"',并且此字符串中没有类似PHP变量的内容。

答案 1 :(得分:1)

\d identical with [0-9] - digits in expression
\D identical with [^0-9] - NOT digits in expression

我使用单引号。

在你的例子中:

preg_replace('/\D/', '', $number) - 1234567891234

将用''

替换所有NON数字
preg_replace('/\d/', '', $number) = asd.,a!"·$%&/()=/*-+

将用''

替换所有数字
preg_replace('/[^0-9]+/', '', $number) = 1234567891234

将用''

替换所有NON数字