Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
ES系列文章
正则的扩展
正则表达式是用来匹配字符串的,在es5有三个修饰符分别是: i(忽略大小写) m(多行匹配) g(全局匹配)。es6新增两个修饰符分别是:y(粘连) u(unicode)。
- 量词
字符 | 含义 |
---|---|
? | 出现0次或一次(最多出现一次) |
+ | 出现一次或者多次 (至少出现一次) |
* | 出现0次或者多次(任意次) |
{n} | 出现n次 |
{n,m} | 出现n到m次 |
{n,} | 至少出现n |
- 边界
字符 | 等价类 |
---|---|
^ | 以xxx开始 |
$ | 以xxx结束 |
\b | 单词边界 |
\B | 非单词边界 |
- 预定义类
字符 | 等价类 | 含义 |
---|---|---|
. | [^\r\n] | 除了回车符和换行符之外的所有字符 |
\d | [0-9] | 数字字符 |
\D | [^0-9] | 非数字字符 |
\s | [\t\n\xOB\f\r] | 空白符 |
\S | [^\t\n\xOB\f\r] | 非空白字符 |
\w | [a-zA-Z_0-9] | 单词字符(字母、数字下划线) |
\W | [^a-zA-Z_0-9] | 非单词字符 |
y修饰符
y修饰符的作用与g修饰符类似,也是全局匹配,后一次匹配都从上一次匹配成功的下一个位置开始。不同之处在g修饰符只要剩余位置中存在匹配就可,而y修饰符确保匹配必须从剩余的第一个位置开始,这也就是“粘连”的涵义。
const str = 'aaa_aa_a'
const reg1 = /a+/g // 每次匹配剩余的
const reg2 = /a+/y // 剩余的第一个开始匹配
console.log(reg1.exec(str))
console.log(reg2.exec(str))
console.log(reg1.exec(str)) // aa
console.log(reg2.exec(str)) // null
console.log(reg1.exec(str))
console.log(reg2.exec(str))
u修饰符
// \u0000~\uffff es5范围
const str = '\uD842\uDFB7' // 表示一个字符
console.log(/^\uD842/.test(str)) // es5 true
console.log(/^\uD842/u.test(str)) // es6 false
// .除了换行符以外的任意单个字符
console.log(/^.$/.test(str)) // false
console.log(/^.$/u.test(str)) // true
console.log(/\u{61}/.test('a')) // false
console.log(/\u{61}/u.test('a')) // true
console.log(/𠮷{2}/.test('𠮷𠮷')) // false
console.log(/𠮷{2}/u.test('𠮷𠮷')) // true
一个前端小白,若文章有错误内容,欢迎大佬指点讨论!