正则表达式的汉字匹配

这里是几个主要非英文语系字符范围

2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。

3400~4DFFh:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字。

4E00~9FFFh:中日韩认同表意文字区,总计收容20,902个中日韩汉字。

A000~A4FFh:彝族文字区,收容中国南方彝族文字和字根。

AC00~D7FFh:韩文拼音组合字区,收容以韩文音符拼成的文字。

F900~FAFFh:中日韩兼容表意文字区,总计收容302个中日韩汉字。

FB00~FFFDh:文字表现形式区,收容组合拉丁文字、希伯来文、阿拉伯文、中日韩直式标点、小符号、半角符号、全角符号等。

比如需要匹配所有中日韩非符号字符,那么正则表达式应该是^[\u3400-\u9FFF]+$ 
理论上没错, 可是我到msn.co.ko随便复制了个韩文下来, 发现根本不对, 诡异 
再到msn.co.jp复制了个‘お‘, 也不得行..

然后把范围扩大到^[\u2E80-\u9FFF]+$, 这样倒是都通过了, 这个应该就是匹配中日韩文字的正则表达式了, 包括我們臺灣省還在盲目使用的繁體中文

而关于中文的正则表达式, 应该是^[\u4E00-\u9FFF]+$, 和论坛里常被人提起的^[\u4E00-\u9FA5]+$很接近

需要注意的是论坛里说的^[\u4E00-\u9FA5]+$这是专门用于匹配简体中文的正则表达式, 实际上繁体字也在里面, 我用测试器测试了下‘中華人民共和國‘, 也通过了, 当然, ^[\u4E00-\u9FFF]+$也是一样的结果

正则表达式的汉字匹配

时间: 2024-11-05 17:27:59

正则表达式的汉字匹配的相关文章

shell 正则表达式与文件名匹配

1) . : 匹配任意单ASCII 字符,可以为字母,或为数字.2) 举例: ..XC..匹配deXC1t.23XCdf等,.w..w..w.匹配rwxrw-rw-行首以^匹配字符串或字符序列1) ^ : 允许在一行的开始匹配字符或单词.2) 举例: ^.01 匹配0011cx4.c01sdf 等,^d 匹配drwxr-xr-x.drw-r--r--等 行尾以$匹配字符串或字符 1) $ : 在行尾匹配字符串或字符,$符号放在匹配单词后.2) 举例: trouble$ 匹配以单词trouble结

JAVA之旅(三十四)——自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫

JAVA之旅(三十四)--自定义服务端,URLConnection,正则表达式特点,匹配,切割,替换,获取,网页爬虫 我们接着来说网络编程,TCP 一.自定义服务端 我们直接写一个服务端,让本机去连接,可以看到什么样的效果 package com.lgl.socket; import java.io.IOException; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; publ

Delphi 正则表达式语法(3): 匹配范围

Delphi 正则表达式语法(3): 匹配范围 // [A-Z]: 匹配所有大写字母 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := 'CodeGear Delphi 2007 for Win32';   reg.RegEx  := '[A-Z]';   reg.Replacement := '◆';   reg.ReplaceAll;   ShowMessage(reg.Subject

Delphi 正则表达式语法(7): 匹配转义字符

Delphi 正则表达式语法(7): 匹配转义字符 // ? 号的意义是匹配 0-1 次, 如果需要匹配 ? 怎么办 var   reg: TPerlRegEx; begin   reg := TPerlRegEx.Create(nil);   reg.Subject := '你好吗? 还行!';   reg.RegEx  := '\?|!'; // 加转义用的 \   reg.Replacement := '◆';   reg.ReplaceAll;   ShowMessage(reg.Sub

正则表达式的全局匹配模式

首先,要明确一点,所有的正则表达式都有一个lastIndex属性,用于记录上一次匹配结束的位置.如果不是全局匹配模式,那lastIndex的值始终为0,在匹配过一次后,将会停止匹配. 正则表达式的全局匹配模式,就是在创建正则表达式的时候使用g标识符或者将global属性设置为true,在全局匹配模式下,正则表达式会对指定要查找的字符串执行多次匹配.每次匹配使用当前正则对象的lastIndex属性的值作为在目标字符串中开始查找的起始位置.如果找不到匹配的项lastIndex的值会被重新设置为0.

关于正则表达式的递归匹配问题

经常会有这样的需求,要求匹配出成对的小括号里的内容, 而一般正则表达式中的 ?R 的语法似乎在C#中不被支持, 在一番努力之下,终于找到以下一段描述 /(  应该是 \( 不是用 /转义而是用 \来转义 匹配嵌套的构造 微软公司已经包含了一个有趣的创新来匹配稳定的构造(历史上,这是正则表达式所做不到的).这并不容易掌握 — 尽管这节较短,但是注意,它非常的晦涩难懂. 从一个例子开始可能更简单一些,所以我用这段代码作为开始: Regex r = new Regex(@"/((?>[^()]+

C#正则表达式的递归匹配分析

在C#程序设计中经常会遇到这样的需求,要求匹配出成对的小括号里的内容,但是一般正则表达式中的 ?R 的语法似乎在C#中不被支持, 经过一番查找与测试,终于找到以下一段描述 /(  应该是 \( 不是用 /转义而是用 \来转义 匹配嵌套的构造 微软公司已经包含了一个有趣的创新来匹配稳定的构造(历史上,这是正则表达式所做不到的).这并不容易掌握 ― 尽管这节较短,但是注意,它非常的晦涩难懂. 从一个例子开始可能更简单一些,所以我用这段代码作为开始: Regex r = new Regex(@"/((

JS正则表达式的分组匹配

什么是分组 通俗来说,我理解的分组就是在正则表达式中用()包起来的内容代表了一个分组,像这样的: var reg = /(\d{2})/ reg.test('12'); //true 这里reg中的(/d{2})就表示一个分组,匹配两位数字 分组内容的的形式 一个分组中可以像上面这样有一个具体的表达式,这样可以优雅地表达一个重复的字符串 /hahaha/ /(ha){3}/ 这两个表达式是等效的,但有了分组之后可以更急简洁. 体格分组中还可以有多个候选表达式,例如 var reg = /I co

.net使用正则表达式校验、匹配字符工具类

开发程序离不开数据的校验,这里整理了一些数据的校验.匹配的方法: 1 /// <summary> 2 /// 字符(串)验证.匹配工具类 3 /// </summary> 4 public class ValidatorTools 5 { 6 #region 匹配方法 7 /// <summary> 8 /// 验证字符串是否匹配正则表达式描述的规则 9 /// </summary> 10 /// <param name="inputStr&