Unicode 属性类

目前,有一个提案,引入了一种新的类的写法\p{...}\P{...},允许正则表达式匹配符合 Unicode 某种属性的所有字符。

  1. const regexGreekSymbol = /\p{Script=Greek}/u;
  2. regexGreekSymbol.test('π') // true

上面代码中,\p{Script=Greek}指定匹配一个希腊文字母,所以匹配π成功。

Unicode 属性类要指定属性名和属性值。

  1. \p{UnicodePropertyName=UnicodePropertyValue}

对于某些属性,可以只写属性名。

  1. \p{UnicodePropertyName}

\P{…}\p{…}的反向匹配,即匹配不满足条件的字符。

注意,这两种类只对 Unicode 有效,所以使用的时候一定要加上u修饰符。如果不加u修饰符,正则表达式使用\p\P会报错,ECMAScript 预留了这两个类。

由于 Unicode 的各种属性非常多,所以这种新的类的表达能力非常强。

  1. const regex = /^\p{Decimal_Number}+$/u;
  2. regex.test('????????????????') // true

上面代码中,属性类指定匹配所有十进制字符,可以看到各种字型的十进制字符都会匹配成功。

\p{Number}甚至能匹配罗马数字。

  1. // 匹配所有数字
  2. const regex = /^\p{Number}+$/u;
  3. regex.test('²³¹¼½¾') // true
  4. regex.test('㉛㉜㉝') // true
  5. regex.test('ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ') // true

下面是其他一些例子。

  1. // 匹配各种文字的所有字母,等同于 Unicode 版的 \w
  2. [\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]
  3. // 匹配各种文字的所有非字母的字符,等同于 Unicode 版的 \W
  4. [^\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]
  5. // 匹配所有的箭头字符
  6. const regexArrows = /^\p{Block=Arrows}+$/u;
  7. regexArrows.test('←↑→↓↔↕↖↗↘↙⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇧⇩') // true

Unicode 属性类相关推荐

  1. perl中unicode属性

    http://shouce.jb51.net/perl/PatternMatching.html 第五章 模式匹配 第五章 模式匹配 5.1 正则表达式箴言 5.2 模式匹配操作符 5.2.1 模式修 ...

  2. Python学习10 内置属性 对象属性 类属性 私有属性 私有方法 对象方法 类方法 静态方法

    内置属性 创建类时系统自动创建的属性 # 内置属性:dir(对象),列出所有的内置属性 class Person(object):'''Person类1'''# Person类2__slots__ = ...

  3. java hash 数组_Java数组 哈希表 属性类 -解道Jdon

    数组 哈希表 属性类 动态小数据操作是WEB开发中不可避免的,这就涉及到数组 哈希表 属性类等几个功能;本文提供本人常用语法和简单解释: 一般数组定义 //定义数组catalogs public st ...

  4. 速卖通html自定义属性,速卖通定制属性类目公告

    雨果网获悉,近日,速卖通发布定制属性类目公告,公告指出,为了提升消费者物流体验,支持卖家提供多元.丰富.有趣好商品,平台针对以下包含定制属性类目进行公示.未纳入此定制类目的,默认最长备货期为7个自然日 ...

  5. Java正则之Unicode属性匹配的那些事

    前言:最近项目中客户要求只保留文本中的字母部分,比如将处理文本 [ 文本你 好 呀, PL-g;'.*o,o 121"'2ds -> 你好呀PLgoods ].使用如下Java代码可以 ...

  6. python计数属性类

    class Student:count=0def __init__(self,name,age):self.name=nameself.age=ageStudent.count+=1 # 要使得变量全 ...

  7. 类属性-类属性的定义及使用

    class Tool(object):# 使用赋值语句定义类属性,记录所有工具对象的数量count = 0def __init__(self, name):self.name = name# 让类属性 ...

  8. JAXB 有两个名为 ** 的属性,类的两个属性具有相同名称 **解决方案

    用eclipse写JAXB时,发现总是报这样的错. 这是为什么呢? 在网上搜索到的jaxb2的中文教程很少,而且内容太过简单,查阅了一些英文的资料,发现问题是"名称的冲突". 这里 ...

  9. WCF 中序列化自定义依赖属性类

    众所周知.NetFramework中存在着两种依赖属性,他们也分别集成着不同但名称相同的依赖对象: System.Windows.DependencyProperty:System.Windows.D ...

最新文章

  1. char怎么比较_C语言的 main 函数到底怎么写才是对的?
  2. [HEOI2016/TJOI2016]排序
  3. 读完这篇文章,就基本搞定了Redis数据库
  4. python38怎么用_Python基础练习实例38(数组操作)
  5. DbContext 和ObjectContext两者的区别
  6. 数据的标准化【转载】
  7. Android使用的工具类
  8. 准备创业或刚创业的朋友必读
  9. mysql返回的数据是什么格式_磁盘格式化后能恢复数据吗?先了解什么是格式化...
  10. Oracle RMAN备份与还原
  11. 前端html小技巧(css篇)—表单美化详解
  12. Linux打包和解包
  13. 树莓派 串口如何使用 以及树莓派引脚对照表
  14. rxbus 源码_RxBus学习
  15. 相机参数(焦距)初始化对三维重建过程的影响
  16. 计算机考研与就业的利弊分析,考研还是工作?两种选择的利弊分析,让你做出正确选择!...
  17. 制作WINRE恢复光盘
  18. C Primer Plus(6) 中文版 第9章 函数 9.1 复习函数
  19. 白鹭发布html5,白鹭Egret Engine 1.5发布 HTML5游戏性能大幅提升
  20. ERP生产管理系统,如何解决机械制造企业生产管理难题?

热门文章

  1. windows下boost库的基本使用方法
  2. restful是什么
  3. 重构_改善既有的代码设计(一)
  4. DataTable 类(一)表结果操作
  5. Android应用删除顶部标题栏
  6. git 源代码自动检查_Visual Studio中Git的简单使用
  7. JAVA六大线程池详解
  8. cation,validation,qualification有何区别
  9. .net测试学习--理解.net测试选项
  10. HTML5 3D爱心动画及其制作过程