在字符串中查找特殊字符

时间:2015-01-25 11:25:58

标签: php regex

问题: -

我使用以下正则表达式搜索字符串中的特殊字符

/^((?!^[a-zA-Z0-9\s]+$).)*$/

但我不知道如何从字符串中获取所有特殊字符。

preg_match_all($pattern,'adcbasjkd*ACas!',$match)

给出

array
(
    0 => 'adcbasjkd*ACas!'
    1 => '!'
)

正如您所见,我未在*中显示adcbasjkd*ACas!作为结果。

问题: -

那么如何才能获得与模式匹配的所有字符?

找到特殊字符的模式很好,因为我对正则表达式不太好。

2 个答案:

答案 0 :(得分:2)

否定课程

$pattern = '/[^a-z\d]/i';
preg_match_all($pattern,'adcbasjkd*ACas!',$match);

带有ignoreCase标志的正则表达式[^a-z\d]可以捕获任何不是字母和数字的内容。

答案 1 :(得分:1)

[^a-zA-Z0-9\s]

你可以直接使用它。参见演示。

https://www.regex101.com/r/rG7gX4/26

$re = "/[^a-zA-Z0-9\\s]/mi";
$str = "adcbasjkd*ACas!";

preg_match_all($re, $str, $matches);

这个正则表达式表示捕获属于可用字符类的所有内容。字符类被否定,因此不会捕获任何不在其中的内容。 默认情况下,全局标志为on。因此它将匹配所有此类字符。