创建
// 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
![正则方法](https://img2023.cnblogs.com/blog/1373491/202301/1373491-20230107003905938-1952385812.png)
规则
字符 |
含义 |
\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
*/
更多正则查询