关于正则表达式的语法,可以参考 - Python 正则,这篇主要介绍在 JavaScript 中,正则的应用。
RegExp 也是一个 JavaScript 的内置对象,它封装了一些处理正则的方法。
new RegExp() instanceof RegExp // true
test
/*
new RegExp('a') 匹配规则
test('abc') 匹配源 | 返回布尔值
*/
new RegExp('a').test('abc') // true
new RegExp('a').test('bcd') // false
/*
/.../ 是 RegExp 对象的简写,两者是等价的
*/
/a/.test('abc') // true
/a/.test('bcd') // false
exec
/b/.exec('abc') // ["b", index: 1, input: "abc"]
/*
返回匹配的信息
[0] 匹配内容
[1] 首次匹配位置
[2] 匹配源
*/
match
'abc'.match(/a/) // ["a", index: 0, input: "abc"]
/*
match 和 exec 的作用是一样的,只是 match 是字符串方法,而 exec 是正则方法
*/
replace
'a'.replace(/\w/,'b') // b
/*
替换,也是一个支持正则的字符串方法
*/
search
'cba'.search(/a/) // 2
/*
查找字符串位置,不存在返回 -1,可以看出是一个正常正则的 indexOf
*/
split
'a b c'.split(/\s+/) // ['a','b','c'] | 裁剪
分组
/(a)(b)/.exec('ab') // ["ab", "a", "b", index: 0, input: "ab"]
'ab'.match(/(a)(b)/) // ["ab", "a", "b", index: 0, input: "ab"]
/*
() 括号是特别的标示,不会影响正则匹配,括号的内容会单独返回出来,这种操作叫做分组
exec 和 match 都支持分组功能
*/
符号
/*
g 全局 | 匹配多次
*/
'a1a'.match(/a/g) // ['a','a'] | 默认只匹配一次
/*
i 忽略大小写
*/
/a/.test('A') // true
/*
m 多行匹配 | 即使文本换行了也能被匹配到
*/
/^1/.test('\n1') // false
/^1/m.test('\n1') // true
JavaScript 数据类型
JavaScript 数字
JavaScript 字符串
JavaScript 数组
JavaScript 对象
JavaScript Map
JavaScript Set
JavaScript null
JavaScript undefined
JavaScript 类型检测
JavaScript 包装对象
JavaScript 函数
JavaScript 参数
JavaScript 匿名函数
JavaScript 箭头函数
JavaScript 递归
JavaScript 闭包
JavaScript 生成器
JavaScript 异步
JavaScript setTimeout
JavaScript setInterval
JavaScript 回调
JavaScript Promise
JavaScript async await