我目前遇到问题,我不知道如何使正则表达式匹配特殊字符,同时忽略表情符号。
示例,我想匹配此字符串中不是表情符号的特殊字符:❤️测试❤️
目前作为我的正则表达式,我有
[^x00-x7F]+
电流输出:❤️测试❤️
所需输出:测试
我将如何解决这个问题?
也许,这个表达式可能有效:
$re = '/[x{1f300}-x{1f5ff}x{1f900}-x{1f9ff}x{1f600}-x{1f64f}x{1f680}-x{1f6ff}x{2600}-x{26ff}x{2700}-x{27bf}x{1f1e6}-x{1f1ff}x{1f191}-x{1f251}x{1f004}x{1f0cf}x{1f170}-x{1f171}x{1f17e}-x{1f17f}x{1f18e}x{3030}x{2b50}x{2b55}x{2934}-x{2935}x{2b05}-x{2b07}x{2b1b}-x{2b1c}x{3297}x{3299}x{303d}x{00a9}x{00ae}x{2122}x{23f3}x{24c2}x{23e9}-x{23ef}x{25b6}x{23f8}-x{23fa}]/u';
$str = '❤️𝓉𝑒𝓈𝓉𝒾𝓃𝑔❤️';
$subst = '';
echo preg_replace($re, $subst, $str);
输出
𝓉𝑒𝓈𝓉𝒾𝓃𝑔️
如果您希望探索/简化/修改表达式,请在此演示的右上角面板上解释该表达式。
参考:
JavaScript Unicode 表情符号正则表达式
使用以下 unicode 正则表达式:
[^p{M}p{S}]+
-
p{M}
匹配要与另一个字符组合的字符(此处️
(。 -
p{S}
匹配符号(在本例中为❤
(。
演示
我认为您的帖子标题与正文不匹配。
表情符号和 AlphaNum 字符之间几乎没有重叠。
有几个键帽表情符号,但由于它们的顺序超出了
第一个数字不与字母数字重叠,只需放置
在阿尔法努姆类面前的消极展望。
'~(?![0-9]x{FE0F}x{20E3}|x{2139})[pLpN]+~'
https://regex101.com/r/1JcUqY/1