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. Python 潮流周刊#90:uv 一周岁了,优缺点分析(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  2. Linux Vim 最全面教程:从入门到精通

    一.引言 Vim 是一款功能强大且在 Linux 系统中广泛使用的文本编辑器.它有着高效的编辑模式.丰富的快捷键以及众多强大的功能,对于想要深入学习 Linux 系统操作以及进行文本处理相关工作的新手 ...

  3. Kafka - server.properties参数详解

    server.properties #broker的全局唯一编号,不能重复 broker.id=0 #用来监听链接的端口(kafka端口号),producer或consumer将在此端口建立连接 po ...

  4. 在 Visual Studio 上体验腾讯云 AI 代码助手

    ​本文以以 Visual Studio 2022 为例. 第一步 安装[腾讯云 AI 代码助手] 打开以 Visual Studio 2022,依次点击工具栏中的-** 扩展 - ** 管理扩展 ,在 ...

  5. centos使用gcc编译c++源码文件(*.cpp)

    1.检查gcc是否安装 输入g++如提示:g++: fatal error: no input files说明已经安装gcc环境 2.安装gcc环境,如已经安装略过此步骤 yum install gc ...

  6. Educational Codeforces Round 175 (Rated for Div. 2) 比赛记录

    Educational Codeforces Round 175 (Rated for Div. 2) 比赛记录 比赛连接 手速场,上蓝场,但是有点唐,C 想错了写了半个多小时,想到正解不到 \(10 ...

  7. python os.walk函数

    os.walk() 方法用于通过在目录树中游走输出在目录中的文件名,向上或者向下. root 所指的是当前正在遍历的这个文件夹的本身的地址 dirs 是一个 list ,内容是该文件夹中所有的目录的名 ...

  8. Web前端入门第 13 问:HTML 标签和属性是否区分大小写?

    HELLO,这里是大熊学习前端开发的入门笔记. 本系列笔记基于 windows 系统. 注意:以下截图都来源于 Chrome 浏览器,不同浏览器可能会产生不同的渲染结果. 思考一个问题:英文写法都分大 ...

  9. mysql基础中的基础 函数

    前段时间b站看sql基础语法,在此做一总结 1.基本函数 mysql中的函数基本可以分为单行函数和分组函数,单行函数用于处理单个的数据,分组函数则是传输一组值过去进行处理.单行函数有可分为字符函数,数 ...

  10. vim中文乱码 vim字符集设置

    vim中文乱码 vim字符集设置 vim的设置一般放在/etc/vimrc文件中,不过,建议不要修改它.可以修改~/.vimrc文件(默认不存在,可以自己新建一个),写入所希望的设置. set fil ...