• 如何正则匹配乱码?


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

    (中文)(¥)(abc+-*/)(한국인)(小さな日本)(��)(中文)(¥)(+-*/)(한국인)(小さな日本)

    正则表达式[ -~]+,可以匹配所有的可打印的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]+

    测试如下,效果良好:

    a3b3b798f6b9ef9dbebbd57d6b6d1217.jpeg

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

    [^ -~\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]+.*

    3637fb96591dcaf9fcd2f00c151f9911.jpeg

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

    [ -~\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]+.*

    e399f34f83a846e56510d55d4db83a23.jpeg

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

    07c88964860e9904445f807f52520fec.jpeg

    网络安全任重道远,洗洗睡吧~

    d7e7447f60349cd67c7cad5d1968d313.gif

  • 相关阅读:
    动捕设备VDSuit Full便携式动作捕捉设备,帮你轻松打破次元壁
    asp.net电影院选座系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
    P1039 [NOIP2003 提高组] 侦探推理
    Streamlit学习笔记
    第十一章 Windows特权升级
    springMSV
    艺人百度百科怎么创建
    Android 12.0 根据app包名授予app监听系统通知权限
    Spark Streaming
    C++核心编程(三)
  • 原文地址:https://blog.csdn.net/admin_gt/article/details/126208880