簡體   English   中英

在忽略表情符號的同時,如何與非字母數字的正則表達式特殊字符匹配?

[英]How do i match with regex special chars that are not alphanumeric whilst ignoring emojis?

我目前遇到問題,我不知道如何在忽略表情符號的同時使正則表達式匹配特殊字符。

例如,我要匹配此字符串中不是表情符號的特殊字符:❤️𝓉𝑒𝓈𝓉𝒾𝓃𝑔❤️

目前作為我的正則表達式

[^\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字符之間幾乎沒有重疊。
有幾個鍵帽表情符號,但是由於它們的順序超出
前幾位不與字母數字重疊,僅需輸入
在alphanum類前面的負面展望。

'~(?![0-9]\\x{FE0F}\\x{20E3}|\\x{2139})[\\pL\\pN]+~'

https://regex101.com/r/1JcUqY/1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM