创建
// 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
- g: 全部
- i: 忽略大小写
- m: 多行匹配
规则
字符 | 含义 |
---|---|
\d | 0-9的数字 |
\s | 空白字符:\t \n \v \r |
\S | 非空字符 |
\w | 数字字母下划线 |
\W | 除了\w外的字符,如非拉丁字母或空格 |
.(点) | 除了换行符以外所有字符 |
^ | 文本开头 |
$ | 文本结尾 |
\b | 词边界 |
\ | 转义如:\. [] () $ \ + * ? ^ |
? | 匹配0或1次 {0,1} |
+ | 匹配1次或多次 {1,} |
* | 零个或多个 {0,} |
{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
*/
标签:abc,匹配,re1,JS,正则,const,ig
From: https://www.cnblogs.com/hyf120/p/17032016.html