Unicode 属性类
Unicode 属性类
目前,有一个提案,引入了一种新的类的写法\p{...}
和\P{...}
,允许正则表达式匹配符合 Unicode 某种属性的所有字符。
const regexGreekSymbol = /\p{Script=Greek}/u;
regexGreekSymbol.test('π') // true
上面代码中,\p{Script=Greek}
指定匹配一个希腊文字母,所以匹配π
成功。
Unicode 属性类要指定属性名和属性值。
\p{UnicodePropertyName=UnicodePropertyValue}
对于某些属性,可以只写属性名。
\p{UnicodePropertyName}
\P{…}
是\p{…}
的反向匹配,即匹配不满足条件的字符。
注意,这两种类只对 Unicode 有效,所以使用的时候一定要加上u
修饰符。如果不加u
修饰符,正则表达式使用\p
和\P
会报错,ECMAScript 预留了这两个类。
由于 Unicode 的各种属性非常多,所以这种新的类的表达能力非常强。
const regex = /^\p{Decimal_Number}+$/u;
regex.test('????????????????') // true
上面代码中,属性类指定匹配所有十进制字符,可以看到各种字型的十进制字符都会匹配成功。
\p{Number}
甚至能匹配罗马数字。
// 匹配所有数字
const regex = /^\p{Number}+$/u;
regex.test('²³¹¼½¾') // true
regex.test('㉛㉜㉝') // true
regex.test('ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ') // true
下面是其他一些例子。
// 匹配各种文字的所有字母,等同于 Unicode 版的 \w
[\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]
// 匹配各种文字的所有非字母的字符,等同于 Unicode 版的 \W
[^\p{Alphabetic}\p{Mark}\p{Decimal_Number}\p{Connector_Punctuation}\p{Join_Control}]
// 匹配所有的箭头字符
const regexArrows = /^\p{Block=Arrows}+$/u;
regexArrows.test('←↑→↓↔↕↖↗↘↙⇏⇐⇑⇒⇓⇔⇕⇖⇗⇘⇙⇧⇩') // true
Unicode 属性类相关推荐
- perl中unicode属性
http://shouce.jb51.net/perl/PatternMatching.html 第五章 模式匹配 第五章 模式匹配 5.1 正则表达式箴言 5.2 模式匹配操作符 5.2.1 模式修 ...
- Python学习10 内置属性 对象属性 类属性 私有属性 私有方法 对象方法 类方法 静态方法
内置属性 创建类时系统自动创建的属性 # 内置属性:dir(对象),列出所有的内置属性 class Person(object):'''Person类1'''# Person类2__slots__ = ...
- java hash 数组_Java数组 哈希表 属性类 -解道Jdon
数组 哈希表 属性类 动态小数据操作是WEB开发中不可避免的,这就涉及到数组 哈希表 属性类等几个功能;本文提供本人常用语法和简单解释: 一般数组定义 //定义数组catalogs public st ...
- 速卖通html自定义属性,速卖通定制属性类目公告
雨果网获悉,近日,速卖通发布定制属性类目公告,公告指出,为了提升消费者物流体验,支持卖家提供多元.丰富.有趣好商品,平台针对以下包含定制属性类目进行公示.未纳入此定制类目的,默认最长备货期为7个自然日 ...
- Java正则之Unicode属性匹配的那些事
前言:最近项目中客户要求只保留文本中的字母部分,比如将处理文本 [ 文本你 好 呀, PL-g;'.*o,o 121"'2ds -> 你好呀PLgoods ].使用如下Java代码可以 ...
- python计数属性类
class Student:count=0def __init__(self,name,age):self.name=nameself.age=ageStudent.count+=1 # 要使得变量全 ...
- 类属性-类属性的定义及使用
class Tool(object):# 使用赋值语句定义类属性,记录所有工具对象的数量count = 0def __init__(self, name):self.name = name# 让类属性 ...
- JAXB 有两个名为 ** 的属性,类的两个属性具有相同名称 **解决方案
用eclipse写JAXB时,发现总是报这样的错. 这是为什么呢? 在网上搜索到的jaxb2的中文教程很少,而且内容太过简单,查阅了一些英文的资料,发现问题是"名称的冲突". 这里 ...
- WCF 中序列化自定义依赖属性类
众所周知.NetFramework中存在着两种依赖属性,他们也分别集成着不同但名称相同的依赖对象: System.Windows.DependencyProperty:System.Windows.D ...
最新文章
- char怎么比较_C语言的 main 函数到底怎么写才是对的?
- [HEOI2016/TJOI2016]排序
- 读完这篇文章,就基本搞定了Redis数据库
- python38怎么用_Python基础练习实例38(数组操作)
- DbContext 和ObjectContext两者的区别
- 数据的标准化【转载】
- Android使用的工具类
- 准备创业或刚创业的朋友必读
- mysql返回的数据是什么格式_磁盘格式化后能恢复数据吗?先了解什么是格式化...
- Oracle RMAN备份与还原
- 前端html小技巧(css篇)—表单美化详解
- Linux打包和解包
- 树莓派 串口如何使用 以及树莓派引脚对照表
- rxbus 源码_RxBus学习
- 相机参数(焦距)初始化对三维重建过程的影响
- 计算机考研与就业的利弊分析,考研还是工作?两种选择的利弊分析,让你做出正确选择!...
- 制作WINRE恢复光盘
- C Primer Plus(6) 中文版 第9章 函数 9.1 复习函数
- 白鹭发布html5,白鹭Egret Engine 1.5发布 HTML5游戏性能大幅提升
- ERP生产管理系统,如何解决机械制造企业生产管理难题?