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. Hive - 表相关

    一.文件存储格式 Hive的文件存储格式包括:textfile.sequence.rcfile.orc.parquet textfile (简介)默认的文件格式,基于行存储.建表时不指定存储格式即为t ...

  2. 【VMware by Broadcom】VMware 产品套件(2025)

    VMware 被 Broadcom 收购后(现为 VMware by Broadcom),重新调整了其产品部门并最终优化为了四个,分别是:VMware Cloud Foundation(VCF)部门. ...

  3. 万字长文手把手教你实现MicroPython/Python发布第三方库

    MicroPython/Python 发布第三方库 原文链接: FreakStudio的博客 摘要 文章讲解内容包括第三方库文件说明和组织.开源许可协议选择.通过black模块.Flake8模块和预提 ...

  4. 【Matlab】cell 和cell array

    最近写matlab程序和处理数据,用到了cell 和struct ,简单记录一下. 从cell array 删除cell 用{}不能删除,要用(),赋予[]. >> s.a=1 s = 包 ...

  5. winform 实现太阳,地球,月球 运作规律https://www.cnblogs.com/axing/p/18762710

    无图眼吊(动图)    缘由 最近我太太在考公学习,给我出了两道高中地理知识的题目,把我问的一头雾水,题目是这样的 第一题 第二题 看到这两道题,当时大脑飞速运转,差点整个身体都在自转了,所以产生了个 ...

  6. linux测试url的访问速度

    在Linux中,你可以使用curl命令来测试URL的访问速度.curl是一个强大的命令行工具,可以用于文件传输和测试网络连接. 以下是使用curl测试URL访问速度的步骤: 打开终端或命令行界面. 输 ...

  7. Can't find PHP headers in /usr/include/php The php-devel package is required for use of this command.

    报错 phpize 编译扩展时,报错:Can't find PHP headers in /usr/include/php The php-devel package is required for ...

  8. BUUCTF---unencode

    1.题目 2.知识 UUENCODE是将二进制文件转换为文本文件的过程,转换后的文件可以通过纯文本e-mail进行传输,在接收方对该文件进行uudecode,即将其转换为初始的二进制文件. 3.解题 ...

  9. 在 CentOS 系统下搭建 ZeroTier Moon 服务器

    安装 ZeroTier One: 首先,确保已经安装了 ZeroTier One.你可以按照上述说明,使用以下命令进行安装: sudo yum install zerotier-one 启动 Zero ...

  10. 【UWB】DWM1000 室内定位串口协议说明

    UWB室内定位串口协议说明 通过串口发送的测距报告消息有三种: "mr"信息包括标签到锚定原始范围 "mc"标签到锚定范围偏差修正范围 - 用于标签位置 &qu ...