创建
// Regular Expression
const reg1 = new RegExp('abc','ig')
const reg2 = /abc/ig
正则表达式和普通字符串
const re1 = /abc/ig
const str = 'abc,sdfas,,dasafabcaddaabaabc'
// 1. 正则表达式
re1.test() // 实例对象方法
re1.exec()
// 2. 使用字符串的方法
str.match(re1) // 正则不加g,会展示第一个的详情,加g返回一个数组
str.matchAll(re1) // 必须加g, 返回一个迭代器对象 iterator
![正则方法]()
规则
| 字符 |
含义 |
| \d |
0-9的数字 |
| \s |
空白字符:\t \n \v \r |
| \S |
非空字符 |
| \w |
数字字母下划线 |
| \W |
除了\w外的字符,如非拉丁字母或空格 |
| .(点) |
除了换行符以外所有字符 |
| ^ |
文本开头 |
| $ |
文本结尾 |
| \b |
词边界 |
| \ |
转义如:\.[] () $ \ + * ? ^ |
| ? |
匹配0或1次 |
| + |
匹配1次或多次 |
| * |
零个或多个 |
| {n,m}, {f} , |
最少匹配n次,最多匹配m次 |
| [12345]、[a-zA-Z0-9] |
1或2或3或4或5 |
| .+ |
贪婪模式 |
| .+? |
惰性模式,获取成功以后就不再匹配。量词后加?如 +? *? ?? |
| | |
或 如:(abc|cba), |
|
|
捕获组
// 使用小括号()
const msg = '<勇敢的心>是我在10,<天堂的翅膀>'
const reg = /<(.+?)>/ig
let arr = msg.matchAll(reg)
for (let item of arr) {
console.log(item[1]) // 勇敢的心 天堂的翅膀
}
/*
两个作用:
它允许将匹配的一部分作为结果数组中的单独项
它将括号视为一个整体
在match、matchAll
0 : 完全匹配
1 : 第一个括号内容
2 : 第二个括号内容
......
(?<命名>) 放到groups中
(?:) 排除
let a = new RegExp((xxx),'')
a.$1
*/
更多正则查询