中文正则

^[1-9]\d*$    //匹配正整数
^[A-Za-z]+$   //匹配由26个英文字母组成的字符串
^[A-Z]+$      //匹配由26个英文字母的大写组成的字符串
^[a-z]+$      //匹配由26个英文字母的小写组成的字符串

^[A-Za-z0-9]+$ //匹配由数字和26个英文字母组成的字符串 


先利用find 命令输出所有的文件名和文件夹名,然后用grep查找中文名

find . -type f 或者find . 输出所有的文件名。然后用下面的grep命令查找。

grep 

  -P, --perl-regexp         PATTERN is a Perl regular expression

unicode中\u4e00-\u9fa5的中文,用grep

grep -P '[\x{4e00}-\x{9f5a}]'  test.log

  当时使用\u的时候提示-P不支持\u \l等。

 或者

grep -P '[\p{Han}]'  test.log

[\u4e00-\u9fa5]有什么用

javascript采用的是utf-16 的编码方案,就是两个字节,unicode 的表现形式就是 \uxxxx 。使用[\u4e00-\u9fa5]匹配中文,\u4e00 是unicode中第一个汉字的码点,\u9fa5 是unicode中最后一个汉字的码点。

'\u4e00' // '一'
'\u95a5' // '龥'
 

不过显然,最后一个码点似乎不对了。 查阅各版本unicode数据文档发现:

6.2-7.0     \u4e00 - \u9fcc
8.0-9.0     \u4e00 - \u9fd5
10.0        \u4e00 - \u9fea
11.0-12.1   \4e00 - \u9fef
13.0        \4e00 - \u9ffc
14.0        \4e00 - \u9fff
 

没看见 \u9fa5 从那个版本开始的,但至少8.0版本后,中文的最后一个码点移动到了 \u9fd5

更正的中文匹配方式 [\u4e00-\u9fff]

'龿龿'.replace(/[\u4e00-\u9fd5]/g, '') // ''
'你会不认识这几个字龦龯龿'.replace(/[\u4e00-\u9fd5]/g, '') // ''
 

万能的中文匹配方式 /\p{sc=Han}/gu

'龿龿'.replace(/\p{sc=Han}/gu, '') // ''
'你会不认识这几个字龦龯龿'.replace(/\p{sc=Han}/gu, '') // ''

中文字符

让我们再来考虑中文字符。

有一个 unicode 属性 Script (一个书写系统),这个属性可以有一个值:CyrillicGreekArabicHan (中文)等等,这里是一个完整的列表

为了实现查找一个给定的书写系统中的字符,我们需要使用 Script=<value>,例如对于西里尔字符:\p{sc=Cyrillic}, 中文字符:\p{sc=Han},等等。

 

补充

文档数据可以在unicode官网查看:

unicode官网

原文地址:https://www.cnblogs.com/youxin/p/15751101.html