问题:-
我使用以下正则表达式来搜索字符串中的特殊字符
/^((?!^[a-zA-Z0-9's]+$).)*$/
但是我不知道如何从字符串中获取所有特殊字符。
喜欢preg_match_all($pattern,'adcbasjkd*ACas!',$match)
给
array
(
0 => 'adcbasjkd*ACas!'
1 => '!'
)
如您所见,结果我没有获得adcbasjkd*ACas!
中存在的*
。
问题:-
那么如何获得与模式匹配的所有字符呢?
并且模式是否适合查找特殊字符,因为我不太擅长正则表达式。
使用否定类
$pattern = '/[^a-z'd]/i';
preg_match_all($pattern,'adcbasjkd*ACas!',$match);
带有 ignoreCase 标志的正则表达式[^a-z'd]
捕获任何不是字母和数字的内容。
[^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);
这个正则表达式说捕获属于可用字符类的所有内容。字符类被否定,因此任何不在它里面的东西都会被捕获。默认情况下,全局标志处于打开状态。因此,它将匹配所有此类字符。