如何正则匹配乱码?(正则匹配 ?)

createh52个月前 (05-07)技术教程31

曾经护网的时候,遇到过要写一个正则,匹配文本中包含乱码,当时精神状态比较紧张,没有写出来,事后感觉非常尴尬,不过现在已经释然了,趁着周末休息的时候,简单研究了一下,以防未来还会遇到同样的问题,测试样例如下,包含:中文、英文、韩文、日文、中文标点符号、英文标点符号,以及乱码。

(中文)(yen)(abc+-*/)()(小さな日本)()(中文)(yen)(+-*/)()(小さな日本)

ailx10

网络安全优秀回答者

网络安全硕士

去咨询

正则表达式[ -~]+,可以匹配所有的可打印的ASCII码字符,但是不能匹配中文、中文标点符号以及乱码。

正则表达式[^ -~]+,可以匹配所有中文、中文标点符号以及乱码,也能匹配日文、韩文。

正则表达式[\u4e00-\u9fa5]+,可以匹配所有的中文。

正则表达式[\u3002\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5\u00a5]+,可以匹配所有的中文标点符号。

正则表达式[\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF]+ ,可以匹配所有的中日韩文,但是不包含标点符号。

所以,初略的构建一个匹配乱码的正则表达式如下:

[^ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5\u00a5]+

测试如下,效果良好:

如果想要匹配乱码之后的所有文本,可以使用如下正则表达式:

[^ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5]+.*

如果想要匹配包含乱码的整个文本,可以使用如下正则表达式:

[ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5]*[^ -~\u2E80-\u2FDF\u3040-\u318F\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\u3002\u00a5\uff1f\uff01\uff0c\u3001\uff1b\uff1a\u201c\u201d\u2018\u2019\uff08\uff09\u300a\u300b\u3008\u3009\u3010\u3011\u300e\u300f\u300c\u300d\ufe43\ufe44\u3014\u3015\u2026\u2014\uff5e\ufe4f\uffe5]+.*

如果文本中不存在乱码,则测试不通过

网络安全任重道远,

发布于 2022-08-06 20:17

相关文章

深入解析MySQL:查询的正则匹配(深入解析mysql:查询的正则匹配是什么)

概述上一章 查询的过滤条件,我们了解了MySQL可以通过 like % 通配符来进行模糊匹配。同样的,它也支持其他正则表达式的匹配,我们在MySQL中使用 REGEXP 操作符来进行正则表达式匹配。用...

「正则表达式」 一、正则表达式字符匹配(前端必懂 )

原书这么一句话,特别棒:正则表达式是匹配模式,要么匹配字符,要么匹配位置,要记住。1. 两种模糊匹配正则表达式的强大在于它的模糊匹配,这里介绍两个方向上的“模糊”:横向模糊和纵向模糊。横向模糊匹配即一...

技术趣讲 |「正则」王国奇遇记(正则设计)

第一回 初来乍到NPC: "欢迎来到正则表达式的国度,勇士!这里的每一个人都使用正则表达式,我是这里的 NPC,每一个来到这里的人都将由我代为介绍正则世界的规则,至于能领悟到何种境界,就看你的...

正则表达式匹配英文字符(正则表达式 英文字符)

正则表达式匹配英文 20 个字符,包括大写,小写。根据搜索结果,看到 honeymoose 分享过一个正则表达式的要求是:匹配 20 个英文字符(大写、小写都包括)。那么这个正则表达式可以写成:^[a...

「正则表达式」 匹配分组(正则表达式分组详解)

1. 匹配分组相关正则表达式代码功能|匹配左右任意一个表达式(ab)将括号中字符作为一个分组\num引用分组num匹配到的字符串(?P)分组起别名(?P=name)引用别名为name分组匹配到的字符串...