精易论坛

标题: 正则如何去除文本里的全部转义符或表情U码? [打印本页]

作者: 千狐    时间: 2023-11-12 14:02
标题: 正则如何去除文本里的全部转义符或表情U码?
这个问题涉及到3个方面

1.  话说  正则如何去除文本里的全部表情U码?
传入的文本=  凉凉\uD83D\uDD1Ehttp://baidu.com猪猪侠     
正则.创建 (“[^\\u0000-\\uFFFF]”, 传入的文本, , , , )  
会失败 并没有去除\uD83D\uDD1E

2.   正则如何去除文本里的全部转义符比如:   \n      \"     \uD83D\uDD1E   \   凡是带有转义符的字符 只留下中文/英文/标点符号
我试过   
传入的文本=  凉凉\uD83D\uDD1Ehttp://baidu.com猪猪侠
正则.创建 (“[\u4E00-\u9FA5A-Za-z0-9_]+”, 传入的文本, 真)
得到: 凉凉\uD83D\uDD1Ehttpbaidu.com猪猪侠      
://被去除了


3.  如何仅去除单个\  而不影响其它转义符
我在用TX机qi人发送消息时
传入的文本=\uD83D\uDD1E你好猪猪侠是一只猪!                          发送成功
传入的文本=你好\n猪猪侠是一只猪!                                             发送成功
传入的文本=\uD83D\uDD1E你好\n猪猪侠是\一只猪!                      发送成功
传入的文本=你好猪猪侠是\一只猪!                                               发送失败
传入的文本=\uD83D\uDD1E你好\n猪猪侠是\一只猪!                      发送失败
经过我半天的研究发现:是单个\导致的失败  因为文本最终会被转义两次变成:
传入的文本=\\uD83D\\uDD1E你好\\n猪猪侠是\\一只猪!                  发送失败:json格式不正确
假设:传入的文本=\uD83D\uDD1E你好\n猪猪侠是\一只猪!   
POST 提交的DATA={"object_name":"MHY:Text","room_id":68775,"msg_content":"{\"content\":{\"text\":\"\\uD83D\\uDD1E你好\\n猪猪侠是\\一只猪!\"}}"}
就会报错:    {"data":null,"message":"Invalid content","retcode":-1}
而如果 POST 提交的DATA={"object_name":"MHY:Text","room_id":68775,"msg_content":"{\"content\":{\"text\":\"\\uD83D\\uDD1E你好\\n猪猪侠是一只猪!\"}}"} 就不会报错

我也想过直接粗暴的
传入的文本=\uD83D\uDD1E你好\n猪猪侠是\一只猪!      
子文本替换(传入的文本,“\”,“”)   但这样一来换行符\n  表情U码\uD83D\uDD1E 以及其它有转义符的特殊符号也也会被替换导致前端不执行换行和显示表情
于是我琢磨者是不是能通过正则只去掉当\ 而保留其它转义符 不影响文本里的 换行符\n  和 表情U码\uD83D\uDD1E

















作者: 蘇中二少    时间: 2023-11-12 15:00
(\\\w+)   然后替换  ?
作者: 蘇中二少    时间: 2023-11-12 15:45
新建 易程序.e (141.69 KB, 下载次数: 16)

作者: 千狐    时间: 2023-11-12 19:32
蘇中二少 发表于 2023-11-12 15:45

文本= \uD83D\uDD1E你好\n猪猪侠是一只猪!
1. 如何仅去除U码表情但保留\n  你这个会连同\n 一起去除
我想得到的是:你好\n猪猪侠是一只猪!
因为有时候表情会出错需要去除 但又要保留\n才能换行

2.    \uD83D\uDD1E你好\n猪猪侠\是一只猪!
如何仅去除 是前面的单个\   而保留下\uD83D\uDD1E 和  \n
我想得到的是:\uD83D\uDD1E你好\n猪猪侠是一只猪!
因为在json语法里 单个\ 会出错 需要去除 可如果直接去除\ 就会变成: uD83DuDD1E你好n猪猪侠是一只猪! 这样前端就无法显示表情和换行了    这种单个\ 好像只能通过排除掉\u \n特征去除???

作者: 千狐    时间: 2023-11-18 01:08
蘇中二少 发表于 2023-11-12 15:00
(\\\w+)   然后替换  ?

你这个是替换掉全部转义符 但无法适配其它精细化场景,比如: 只想去掉文本里的单个\ 但想留下换行\n 和 \u表情码  毕竟 本来就是为了发换行和表情的,只是遇到单个\导致json无法解析才报错




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4