ASCII字符与非ASCII字符的正则
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字符的正则的更多相关文章
- python删除所有的中文字符、非ASCII或非英文字符,检查字符串是否包含非ASCII
Your ''.join() expression is filtering, removing anything non-ASCII; you could use a conditional exp ...
- 转载:字符编码简介 ASCII UTF-8 ISO8859-1
字符编码简介 ASCII UTF-8 ISO8859-1 博客分类: 电脑综合知识 XP数据结构Windows 计算机中的一切都是以数字来表示的,字符同样如此.字符编码就是将字符集编码成为数字序列, ...
- 正则表达式 去除所有非ASCII字符
需求: 去除字符串中包含的所有外国字符 只能使用正则如下,找到包含非ASCII的记录 db=# select * from test where info ~ '[^(\x00-\x7f)]'; id ...
- ASCII 非打印字符
项目出了问题,因为AscII非打印字符的原因,后来找了一下啊ASCII的非打印字符,总共有31个,然后我们直接全部替换成问号了. 解决方式为先找到非打印字符,这是我从网上找的非打印字符表: 进制 十六 ...
- CSS非ASCII字符最佳实践
问题场景 在写样式时经常需要用到非ASCII字符的属性值,如下: ? 1 2 3 4 5 6 7 8 9 10 11 .hot_list .sign_discount:before { cont ...
- ASCII,Unicode和UTF-8字符编码
ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte).也就是 ...
- 字符编码(ASCII、ANSI、GB2312、UTF-8等)系统梳理
引言 在显示器上看见的文字.图片等信息在电脑里面其实并不是我们看见的样子,即使你知道所有信息都存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片.假设,你用显微镜把盘片放大,会看见盘片表面凹凸不 ...
- 中文乱码之《字符编码:ASCII,Unicode 和 UTF-8》
参考文献:字符编码笔记:ASCII,Unicode 和 UTF-8 一.ASCII 码 我们知道,计算机内部,所有信息最终都是一个二进制值.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就 ...
- 字符编码中ASCII、Unicode和UTF-8的区别
1. ASCII码 我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串.每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte). ...
- 字符编码(ASCII、ANSI、GB2312、UTF-8等)系统梳理(转载)
引言 在显示器上看见的文字.图片等信息在电脑里面其实并不是我们看见的样子,即使你知道所有信息都存储在硬盘里,把它拆开也看不见里面有任何东西,只有些盘片.假设,你用显微镜把盘片放大,会看见盘片表面凹凸不 ...
随机推荐
- 浅析Bootstrap中Tab(标签页)的使用方法
Bootstrap 导航元素使用相同的标记和基类,改变修饰的class,可以在不同的样式间进行切换如".nav-pills"(胶囊式导航)与 ".nav-tabs&quo ...
- 植物大战僵尸杂交版最新版(PC+手机+苹果)+ 修改器+高清工具
游戏介绍 <植物大战僵尸杂交版>在保留原作经典塔防玩法的基础上,进行了大胆创新和优化.潜艇伟伟迷通过融合多种植物和僵尸元素,创造了全新的游戏体验.玩家不仅能体验到熟悉的植物防御僵尸的乐趣, ...
- Typecho头像被墙的解决方法
首先下载最新开发版本的TYPECHO,然后,在config.inc.php自定义如下: /** 自定义gravatar url前缀 */ define('__TYPECHO_GRAVATAR_PREF ...
- Flume - [01] 概述
一.什么是Flume Flume 是Cloudera提供的一个高可用,高可靠的,分布式的海量日志采集.聚合和传输的系统. Flume最主要的作用就是:实时读取服务器本地磁盘的数据,将数据写入HDFS. ...
- Zookeeper - 客户端常用命令
查看客户端命令帮助信息 查看Zookeeper的版本 查看使用过的历史命令 查看根目录下的znode 创建znode 查看节点信息 修改znode的内容 删除znode 关闭连接 连接客户端 退出客户 ...
- linux curl 测试 websocket 服务
如下 curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: ec ...
- BGP路由优选原则
0 丢弃下一跳不可达的路由 1 优选Preference_Value值最高的路由(本设备有效) Pref-Val:协议首选值 华为私有的属性,只具有本地(本设备)意义,缺省情况下为0,越大越优,0-6 ...
- BUUCTF---BabyRSA(简单求解n)
题目 p+q : 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e ...
- AI可解释性 I | 对抗样本(Adversarial Sample)论文导读(持续更新)
AI可解释性 I | 对抗样本(Adversarial Sample)论文导读(持续更新) 导言 本文作为AI可解释性系列的第一部分,旨在以汉语整理并阅读对抗攻击(Adversarial Attack ...
- 第八届机械工程与应用复合材料国际会议(MEACM 2025)
第八届机械工程与应用复合材料国际会议(MEACM 2025) 吉隆坡,马来西亚 2025年8月25-27日 会议简介:2025年第八届机械工程与应用复合材料国际会议(MEACM 2025)将于2025 ...