其他类型元字符
元字符 | 中文名称 | 匹配对象 |
---|---|---|
- | 连接符 | 用于连接字符串,在字符组内部可表示范围 |
| | 多选分支符 | 逻辑或,匹配任意一个子字符串或一个子表达式 |
注意
- 连接符
-
只有在字符组内部且不位于第一位时,正则引擎才会将其视作元字符,否则作为普通字符处理; - 多选分支符
|
只作用于紧邻的字符串或元素(一个元素即指一个字符组)。
语法声明
本示例使用的JavaScript
正则语法声明 const regexp = /pattern/flags
:
连接符 -
在字符组内部且不位于第一位时,被正则引擎视为连接符,表示一个范围。假设我们想要匹配a
到z
的任意字符5
个(忽略大小写):
javascript
const str = "AchooLuv";
const ret = str.match(/[a-z]{5}/i);
console.log(ret[0]); // 匹配结果为: Achoo
位于字符组内开始处
javascript
const str = "Luv-Achoo";
const ret = str.match(/[-a-z]{5}/i);
console.log(ret[0]); // 匹配结果为: Luv-A
可以看出,位于开始处的-
被正则引擎视为普通字符,而a-z
中的-
仍被正则引擎视为连接符
。
不在字符组内使用
javascript
const str = "Luv-Achoo";
const ret = str.match(/v-a/i);
console.log(ret[0]); // 匹配结果为: v-A
依然被正则引擎视为普通字符,没有表示范围的作用。
多选分支符 |
多选分支符的作用对象是一个字符串或元素,并非字符,像这样:
javascript
const str = "Achoo Luv Achoo|Luv";
const ret = str.match(/Ahoo|Luv/i);
console.log(ret); // 匹配结果为: ['Luv', index: 6]
在字符组内部
javascript
const str = "Achoo Luv Achoo|Luv";
const ret = str.match(/[Achoo|Luv]{9}/i);
console.log(ret); // 匹配结果为: ['Achoo|Luv', index: 10]
在字符组内部时,被正则引擎视为普通字符。