Skip to content

其他类型元字符

元字符中文名称匹配对象
-连接符用于连接字符串,在字符组内部可表示范围
|多选分支符逻辑或,匹配任意一个子字符串或一个子表达式

注意

  • 连接符-只有在字符组内部且不位于第一位时,正则引擎才会将其视作元字符,否则作为普通字符处理;
  • 多选分支符|只作用于紧邻的字符串或元素(一个元素即指一个字符组)。

语法声明

本示例使用的JavaScript正则语法声明 const regexp = /pattern/flags:

连接符 -

在字符组内部且不位于第一位时,被正则引擎视为连接符,表示一个范围。假设我们想要匹配az的任意字符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]

在字符组内部时,被正则引擎视为普通字符。