JS正则

创建

// 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次
+ 匹配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
*/

更多正则查询

posted @ 2023-01-07 00:39  转角90  阅读(11)  评论(0编辑  收藏  举报