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

Jos*_*ano 0 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
Run Code Online (Sandbox Code Playgroud)

当然我做了一些测试,那些是我的结果,我只是想更多地看一些正则表达式.哪个性能更好?

谢谢!!

Jus*_*nas 5

\D意味着什么,除了数字.这是别的[^0-9].
\d是指任何数字.这是[0-9](没有^)的别名.
有什么区别"',因为你不使用内部"'并没有PHP变量,像这样的字符串中.

  • 事实并非如此,`\d` 与 `\p{Digit}` 相同,它匹配的内容超过 `[0-9]`,它包含 unicode 数字并取决于语言环境。请参阅:http://perldoc.perl.org/perlrecharclass.html (2认同)