Moh*_*med 6 javascript regex unicode
我想用图标替换字符串中的所有表情符号现在我成功地将它们替换 {:) :D :P :3 <3 XP .... etc} 为图标,所以如果用户:)在字符串上写这个将替换为图标,但我遇到了一个问题,如果用户粘贴指向同等的unicode,:) 那么我需要它
我如何将unicode图标更改为javascript正则表达式,就像\ud800-\udbff我有很多表情符号所以我想要转换它们的想法,并在转换它们之后我想用正则表达式匹配它们
例如:我们将那些表情符号改为
\uD83D\uDE01|\uD83D\uDE4F| 我不知道如何更改它们所以我需要知道如何将任何表情符号更改为这些角色
Suh*_*pta 18
在ECMAScript 6中,您应该能够以相当简单的方式检测它.我编译了一个包含不同Unicode块的简单正则表达式,即:
正则表达式:
/[\u{1f300}-\u{1f5ff}\u{1f900}-\u{1f9ff}\u{1f600}-\u{1f64f}\u{1f680}-\u{1f6ff}\u{2600}-\u{26ff}\u{2700}-\u{27bf}\u{1f1e6}-\u{1f1ff}\u{1f191}-\u{1f251}\u{1f004}\u{1f0cf}\u{1f170}-\u{1f171}\u{1f17e}-\u{1f17f}\u{1f18e}\u{3030}\u{2b50}\u{2b55}\u{2934}-\u{2935}\u{2b05}-\u{2b07}\u{2b1b}-\u{2b1c}\u{3297}\u{3299}\u{303d}\u{00a9}\u{00ae}\u{2122}\u{23f3}\u{24c2}\u{23e9}-\u{23ef}\u{25b6}\u{23f8}-\u{23fa}]/ug
Run Code Online (Sandbox Code Playgroud)
游乐场: 玩表情符号和正则表达式
这个答案并没有直接回答这个问题,而是对如何使用Unicode块和ES6处理表情符号提供了公平的见解.
Ron*_*yHe 13
使用unicode 属性转义,如下所示:
/\p{Emoji_Presentation}/ug
Run Code Online (Sandbox Code Playgroud)
我认为您还可以使用 Unicode 字符属性。甚至 Unicode 联盟本身也提供了一个 regex,可以相对轻松地针对 ECMAScript 进行调整(通过替换所有出现的\\xwith\\u并将其全部放在一行中)。但它确实会选择可能的表情符号,这意味着它会产生误报。明确建议在假设它们实际上是表情符号之前仍然验证所有匹配项。
这是该正则表达式的一个更严格的版本,它将返回更少的误报,并带有一个迷你演示:
\nconst sentence = \'A ticket to \xe5\xa4\xa7\xe9\x98\xaa costs \xc2\xa52000 . Repeated emojis: . Crying cat: . Repeated emoji with skin tones: \xe2\x9c\x8a\xe2\x9c\x8a\xe2\x9c\x8a\xe2\x9c\x8a\xe2\x9c\x8a\xe2\x9c\x8a. Flags: . Scales \xe2\x9a\x96\xef\xb8\x8f\xe2\x9a\x96\xef\xb8\x8f\xe2\x9a\x96\xef\xb8\x8f.\';\n\nconst regexpUnicodeModified = /\\p{RI}\\p{RI}|\\p{Emoji}(\\p{EMod}+|\\u{FE0F}\\u{20E3}?|[\\u{E0020}-\\u{E007E}]+\\u{E007F})?(\\u{200D}\\p{Emoji}(\\p{EMod}+|\\u{FE0F}\\u{20E3}?|[\\u{E0020}-\\u{E007E}]+\\u{E007F})?)+|\\p{EPres}(\\p{EMod}+|\\u{FE0F}\\u{20E3}?|[\\u{E0020}-\\u{E007E}]+\\u{E007F})?|\\p{Emoji}(\\p{EMod}+|\\u{FE0F}\\u{20E3}?|[\\u{E0020}-\\u{E007E}]+\\u{E007F})/gu\nconsole.log(sentence.match(regexpUnicodeModified));\nRun Code Online (Sandbox Code Playgroud)\n这将记录以下内容:
\n> Array ["", "", "", "", "\xe2\x9c\x8a", "\xe2\x9c\x8a", "\xe2\x9c\x8a", "\xe2\x9c\x8a", "\xe2\x9c\x8a", "\xe2\x9c\x8a", "", "", "\xe2\x9a\x96\xef\xb8\x8f", "\xe2\x9a\x96\xef\xb8\x8f", "\xe2\x9a\x96\xef\xb8\x8f"]\nRun Code Online (Sandbox Code Playgroud)\n这意味着它匹配:
\n请注意,我不知道如何使用它来替换特定的表情符号,正如OP想要的那样,但它确实可以将表情符号放置在额外的标签等中。
\n小智 5
注意 - 以下正则表达式将匹配代理对(补充)以及单个(基本)。
查看匹配内容的十六进制版本:
如果匹配的长度为 2,则字符 1 是低代理,字符 2 是高代理。只需将每个字符格式化为十六进制,并将它们连接到一个字符串中。
您可以尝试通过十六进制范围匹配一些表情符号。
此正则表达式匹配这 1,114 个表情符号字符。
注意- 这不包括 \x00-\x7f 范围内的字符;出于某种原因,这个范围内有表情符号,如 0-9..(使用\p{Emoji=yes})。
下面的正则表达式将匹配这些表情符号。
©®??™???????????????????????????????????????????????????????
????????????????????????????????????????????????????????????
???????????????????????????????????????????????
Run Code Online (Sandbox Code Playgroud)
正则表达式
(?:[\u00A9\u00AE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9-\u21AA\u231A-\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA-\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614-\u2615\u2618\u261D\u2620\u2622-\u2623\u2626\u262A\u262E-\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u2660\u2663\u2665-\u2666\u2668\u267B\u267F\u2692-\u2697\u2699\u269B-\u269C\u26A0-\u26A1\u26AA-\u26AB\u26B0-\u26B1\u26BD-\u26BE\u26C4-\u26C5\u26C8\u26CE-\u26CF\u26D1\u26D3-\u26D4\u26E9-\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733-\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763-\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934-\u2935\u2B05-\u2B07\u2B1B-\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|(?:\uD83C[\uDC04\uDCCF\uDD70-\uDD71\uDD7E-\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01-\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50-\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96-\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F-\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95-\uDD96\uDDA4-\uDDA5\uDDA8\uDDB1-\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB-\uDEEC\uDEF0\uDEF3-\uDEF6]|\uD83E[\uDD10-\uDD1E\uDD20-\uDD27\uDD30\uDD33-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4B\uDD50-\uDD5E\uDD80-\uDD91\uDDC0]))
Run Code Online (Sandbox Code Playgroud)
展开
(?:
[\u00A9\u00AE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9-\u21AA\u231A-\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA-\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614-\u2615\u2618\u261D\u2620\u2622-\u2623\u2626\u262A\u262E-\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u2660\u2663\u2665-\u2666\u2668\u267B\u267F\u2692-\u2697\u2699\u269B-\u269C\u26A0-\u26A1\u26AA-\u26AB\u26B0-\u26B1\u26BD-\u26BE\u26C4-\u26C5\u26C8\u26CE-\u26CF\u26D1\u26D3-\u26D4\u26E9-\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733-\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763-\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934-\u2935\u2B05-\u2B07\u2B1B-\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]
|
(?:
\uD83C [\uDC04\uDCCF\uDD70-\uDD71\uDD7E-\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01-\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50-\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96-\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]
| \uD83D [\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F-\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95-\uDD96\uDDA4-\uDDA5\uDDA8\uDDB1-\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDEE0-\uDEE5\uDEE9\uDEEB-\uDEEC\uDEF0\uDEF3-\uDEF6]
| \uD83E [\uDD10-\uDD1E\uDD20-\uDD27\uDD30\uDD33-\uDD3A\uDD3C-\uDD3E\uDD40-\uDD45\uDD47-\uDD4B\uDD50-\uDD5E\uDD80-\uDD91\uDDC0]
)
)
Run Code Online (Sandbox Code Playgroud)