正则表达式基本使用
匹配单词边界与非单词边界
在正则表达式中,由数字、字母、下划线组成的连续序列表示一个单词,用\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"。