正则表达式基本使用

匹配单词边界与非单词边界

在正则表达式中,由数字、字母、下划线组成的连续序列表示一个单词,用\w表示,\w的边界用\b表示;那么,其余的非边界用\B表示。例如,“a_1”表示一个单词,左右两侧是两个\b,中间衔接处是两个\B;“2023-3-5”表示三个单词,则匹配六个\b和三个\B。

小分组引用

正则表达式的小括号不仅表示优先级,同时也获取小分组;小分组可以在正则表达式当中引用,也可以在函数当中引用;索引从1开始。例如,把“2023-3-5”转换成标准格式:

1 let str = "2023-3-5";
2 let reg = /(?<=\b)(\d)(?=\b)/g;
3 console.log(str.replace(reg, "0$1")); // "2023-03-05"

再例如,在不规则的序列中,找到由相同数字组成的多位数:

1 let str = "aa11a23aa433";
2 let reg = /(\d)\1+/g;
3 console.log(str.match(reg)); // [11,33]

从末尾开始匹配

正则表达式是从左往右匹配,$标识符则可以逆向匹配。例如,用千分号分割一串数字:

1 let str = "1234567";
2 let reg = /\B(?=(?:\d{3})+$)/g;
3 console.log(str.replace(reg, ",")); // "1,234,567"

没有$标识符的情况是这样:"1,2,3,4,567"。

posted @ 2023-03-15 11:27  万物有序  阅读(37)  评论(0编辑  收藏  举报