问题: -
我使用以下正则表达式搜索字符串中的特殊字符
/^((?!^[a-zA-Z0-9\s]+$).)*$/
但我不知道如何从字符串中获取所有特殊字符。
赞preg_match_all($pattern,'adcbasjkd*ACas!',$match)
给出
array
(
0 => 'adcbasjkd*ACas!'
1 => '!'
)
正如您所见,我未在*
中显示adcbasjkd*ACas!
作为结果。
问题: -
那么如何才能获得与模式匹配的所有字符?
找到特殊字符的模式很好,因为我对正则表达式不太好。
答案 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。因此它将匹配所有此类字符。