匹配单个字符型元字符
元字符 | 中文名称 | 匹配对象 |
---|---|---|
. | 点号 | 匹配(除换行符之外)单个任意字符 |
[] | 字符组 | 匹配单个列出的字符 |
[^] | 排除型字符组 | 匹配单个未列出的字符 |
语法声明
本页示例使用的JavaScript
正则语法声明 const regexp = /pattern/flags
:
点号 .
元字符.
的作用是匹配任意单个
字符,像这样:
javascript
const regexp = /./;
const result = regexp.exec("AchooLuv");
console.log(result[0]); // 匹配结果为: A
也可以使用标准量词改变其匹配的数量,像这样:
javascript
const regexp = /.{3}Luv/;
const result = regexp.exec("AchooLuv");
console.log(result[0]); // 匹配结果为: hooLuv
在字符组内部
javascript
const regexp = /[.]/;
const result = regexp.test("AchooLuv");
console.log(result); // 匹配结果为: false
此时元字符.
被正则引擎视为普通字符点号
,而匹配字符串AchooLuv
不包含字符.
,故匹配失败。
字符组 []
元字符[]
的作用是匹配单个列出
的字符,像这样:
javascript
const regexp = /[Lo]/;
const result = regexp.exec("AchooLuv");
console.log(result[0]); // 匹配结果为: o
奇怪!匹配结果为什么不是字符L
呢?
再看看这个例子:
javascript
const regexp = /[Lo]{2}/;
const result = regexp.exec("AchooLuv");
console.log(result[0]); // 匹配结果为: oo
咦?为什么还是没有字符L
呢?至于为什么会是这些匹配结果,你可以前往匹配原理中引擎的匹配规则了解详细介绍!
排除型字符组 [^]
元字符[^]
的作用是在文本中匹配字符组内未列出的第一个字符,像这样:
javascript
const regexp = /[^Achoo]/;
const result = regexp.exec("AchooLuv");
console.log(result[0]); // 匹配结果为: L
当你看完了匹配原理中的引擎的匹配规则时,可以检验下自己是否真的看懂了:
逐一尝试
javascript
const regexp = /[^choo]{2}/;
const result = regexp.exec("AchooLuv");
console.log(result); // 匹配结果为: ['Lu', index: 5]
const regexp = /[^hoo]{2}/;
const result = regexp.exec("AchooLuv");
console.log(result); // 匹配结果为:['Ac', index: 0]
const regexp = /[^hoo]{3}/;
const result = regexp.exec("AchooLuv");
console.log(result); // 匹配结果为:['Luv', index: 5]
const regexp = /[^hoo]{4}/;
const result = regexp.exec("AchooLuv");
console.log(result); // 匹配失败,返回:null