private static System.Text.RegularExpressions.Regex regex = new Regex("([\u0000-\uffff])");
private static System.Text.RegularExpressions.Regex cRegex = new Regex("([\u0100-\uffff])"); private static System.Text.RegularExpressions.Regex eRegex = new Regex(([\u0000-\u00ff])");

这三个正则表达式是用来匹配 Unicode 字符 的,它们的作用如下:

1️⃣ regex = new Regex("([\u0000-\uffff])");

解析

\u0000-\uffff:表示 所有的 Unicode 字符(U+0000 到 U+FFFF)。

([\u0000-\uffff]):

方括号 []:表示匹配字符范围。

小括号 ():表示捕获分组(grouping),会将匹配到的字符存入分组。

\u0000:Unicode 编码的起始字符(NULL)。

\uffff:基本多文种平面(BMP,Basic Multilingual Plane)的最后一个字符(特殊字符)。

作用

这个正则匹配 任何单个 Unicode 字符,相当于 .(匹配所有字符,包括中文、英文、特殊符号等)。

匹配示例

"A"

"汉"

"你"

""

""

"\n"

️ 注意:

这个正则只能匹配 Unicode BMP 平面(U+0000 ~ U+FFFF),无法匹配 U+10000 及以上的字符(如 、 这样的增补字符)。

如果想匹配完整的 Unicode,应该使用 RegexOptions.Singleline 或者 \p{L} 等 Unicode 字符分类。

2️⃣ cRegex = new Regex("([\u0100-\uffff])");

解析

\u0100-\uffff:匹配 U+0100 及以上的字符(非 ASCII 但仍在 BMP 内的字符)。

([\u0100-\uffff]):

只匹配 U+0100 ~ U+FFFF 之间的字符(跳过 U+0000 ~ U+00FF)。

也就是跳过了 ASCII 及扩展 ASCII(U+0000 ~ U+00FF),仅匹配 非 ASCII 的 Unicode 字符。

作用

匹配中文、日文、韩文、阿拉伯文等非 ASCII 语言字符。

不会匹配 ASCII 字符(如 A-Z, a-z, 0-9, 标点符号)。

不会匹配扩展 ASCII(西欧特殊符号,如 é, ñ, ü)。

匹配示例

"汉"

"你"

""

""

"é" (U+00E9,在 ASCII 扩展范围内)

"A" (U+0041,在 ASCII 范围内)

3️⃣ eRegex = new Regex("([\u0000-\u00ff])");

解析

\u0000-\u00ff:匹配 U+0000 到 U+00FF 之间的字符(即 ASCII + 扩展 ASCII)。

([\u0000-\u00ff]):

只匹配 基本 ASCII + 扩展 ASCII,不会匹配 U+0100 以上的 Unicode 字符。

作用

匹配 ASCII(U+0000 ~ U+007F):

A-Z, a-z, 0-9, 标点符号(.,;!?)。

匹配扩展 ASCII(U+0080 ~ U+00FF):

法语、西班牙语、德语等拉丁字符(é, ñ, ü, ç)。

部分特殊符号。

匹配示例

"A"

"9"

","

"é" (U+00E9,在扩展 ASCII 内)

"汉" (U+6C49,不在 U+00FF 内)

"你" (U+4F60,不在 U+00FF 内)

综述

代码示例

using System;
using System.Text.RegularExpressions; class Program
{
private static Regex regex = new Regex("([\u0000-\uffff])"); // 所有 Unicode
private static Regex cRegex = new Regex("([\u0100-\uffff])"); // 仅非 ASCII
private static Regex eRegex = new Regex("([\u0000-\u00ff])"); // 仅 ASCII 和扩展 ASCII static void Main()
{
string test1 = "Hello 世界!";
string test2 = "École française";
string test3 = "123456"; Console.WriteLine($"regex ({test1}): {regex.IsMatch(test1)}"); // true
Console.WriteLine($"cRegex ({test1}): {cRegex.IsMatch(test1)}"); // true (匹配 "世界")
Console.WriteLine($"eRegex ({test1}): {eRegex.IsMatch(test1)}"); // true (匹配 "Hello") Console.WriteLine($"regex ({test2}): {regex.IsMatch(test2)}"); // true
Console.WriteLine($"cRegex ({test2}): {cRegex.IsMatch(test2)}"); // false ("É" 在 U+00FF 内)
Console.WriteLine($"eRegex ({test2}): {eRegex.IsMatch(test2)}"); // true Console.WriteLine($"regex ({test3}): {regex.IsMatch(test3)}"); // true
Console.WriteLine($"cRegex ({test3}): {cRegex.IsMatch(test3)}"); // false (全是 ASCII)
Console.WriteLine($"eRegex ({test3}): {eRegex.IsMatch(test3)}"); // true
}
}

结论

regex([\u0000-\uffff]):匹配所有 Unicode 字符。

cRegex([\u0100-\uffff]):匹配非 ASCII Unicode 字符(如中文、日文、韩文)。

eRegex([\u0000-\u00ff]):匹配ASCII 和扩展 ASCII(如英文、数字、西欧字符)。

如果你需要匹配中文字符,应该使用:

Regex chineseRegex = new Regex("([\u4E00-\u9FFF])"); // 匹配中文字符

ASCII字符与非ASCII字符的正则的更多相关文章

  1. python删除所有的中文字符、非ASCII或非英文字符,检查字符串是否包含非ASCII

    Your ''.join() expression is filtering, removing anything non-ASCII; you could use a conditional exp ...

  2. 转载:字符编码简介 ASCII UTF-8 ISO8859-1

    字符编码简介 ASCII UTF-8 ISO8859-1 博客分类: 电脑综合知识 XP数据结构Windows  计算机中的一切都是以数字来表示的,字符同样如此.字符编码就是将字符集编码成为数字序列, ...

  3. 正则表达式 去除所有非ASCII字符

    需求: 去除字符串中包含的所有外国字符 只能使用正则如下,找到包含非ASCII的记录 db=# select * from test where info ~ '[^(\x00-\x7f)]'; id ...

  4. ASCII 非打印字符

    项目出了问题,因为AscII非打印字符的原因,后来找了一下啊ASCII的非打印字符,总共有31个,然后我们直接全部替换成问号了. 解决方式为先找到非打印字符,这是我从网上找的非打印字符表: 进制 十六 ...

  5. CSS非ASCII字符最佳实践

    问题场景 在写样式时经常需要用到非ASCII字符的属性值,如下: ? 1 2 3 4 5 6 7 8 9 10 11 .hot_list .sign_discount:before {    cont ...

  6. ASCII,Unicode和UTF-8字符编码

    ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte).也就是 ...

  7. 字符编码(ASCII、ANSI、GB2312、UTF-8等)系统梳理

    引言 在显示器上看见的文字.图片等信息在电脑里面其实并不是我们看见的样子,即使你知道所有信息都存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片.假设,你用显微镜把盘片放大,会看见盘片表面凹凸不 ...

  8. 中文乱码之《字符编码:ASCII,Unicode 和 UTF-8》

    参考文献:字符编码笔记:ASCII,Unicode 和 UTF-8 一.ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就 ...

  9. 字符编码中ASCII、Unicode和UTF-8的区别

    1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte). ...

  10. 字符编码(ASCII、ANSI、GB2312、UTF-8等)系统梳理(转载)

    引言 在显示器上看见的文字.图片等信息在电脑里面其实并不是我们看见的样子,即使你知道所有信息都存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片.假设,你用显微镜把盘片放大,会看见盘片表面凹凸不 ...

随机推荐

  1. 浅析Bootstrap中Tab(标签页)的使用方法

    Bootstrap 导航元素使用相同的标记和基类,改变修饰的class,可以在不同的样式间进行切换如".nav-pills"(胶囊式导航)与 ".nav-tabs&quo ...

  2. 植物大战僵尸杂交版最新版(PC+手机+苹果)+ 修改器+高清工具

    游戏介绍 <植物大战僵尸杂交版>在保留原作经典塔防玩法的基础上,进行了大胆创新和优化.潜艇伟伟迷通过融合多种植物和僵尸元素,创造了全新的游戏体验.玩家不仅能体验到熟悉的植物防御僵尸的乐趣, ...

  3. Typecho头像被墙的解决方法

    首先下载最新开发版本的TYPECHO,然后,在config.inc.php自定义如下: /** 自定义gravatar url前缀 */ define('__TYPECHO_GRAVATAR_PREF ...

  4. Flume - [01] 概述

    一.什么是Flume Flume 是Cloudera提供的一个高可用,高可靠的,分布式的海量日志采集.聚合和传输的系统. Flume最主要的作用就是:实时读取服务器本地磁盘的数据,将数据写入HDFS. ...

  5. Zookeeper - 客户端常用命令

    查看客户端命令帮助信息 查看Zookeeper的版本 查看使用过的历史命令 查看根目录下的znode 创建znode 查看节点信息 修改znode的内容 删除znode 关闭连接 连接客户端 退出客户 ...

  6. linux curl 测试 websocket 服务

    如下 curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: ec ...

  7. BGP路由优选原则

    0 丢弃下一跳不可达的路由 1 优选Preference_Value值最高的路由(本设备有效) Pref-Val:协议首选值 华为私有的属性,只具有本地(本设备)意义,缺省情况下为0,越大越优,0-6 ...

  8. BUUCTF---BabyRSA(简单求解n)

    题目 p+q : 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e ...

  9. AI可解释性 I | 对抗样本(Adversarial Sample)论文导读(持续更新)

    AI可解释性 I | 对抗样本(Adversarial Sample)论文导读(持续更新) 导言 本文作为AI可解释性系列的第一部分,旨在以汉语整理并阅读对抗攻击(Adversarial Attack ...

  10. 第八届机械工程与应用复合材料国际会议(MEACM 2025)

    第八届机械工程与应用复合材料国际会议(MEACM 2025) 吉隆坡,马来西亚 2025年8月25-27日 会议简介:2025年第八届机械工程与应用复合材料国际会议(MEACM 2025)将于2025 ...