这几天遇见一个金额千分位的正则,其中一些语法不太理解,查询资料后特此记载个人理解。
\B:这是一个非单词边界的断言它匹配的位置不是单词的开始或结束,用于边界情况判断。
?=(\d{3}) :表示匹配连续三位整数的前置位(此位置实际不指向任何数字,只代表一个位置,用于插入分隔符)
?=特殊性:由于正向先行断言 (?=…) 的存在,这个正则表达式不会改变原始字符串,也不会匹配任何内容。它只是查找一个位置,匹配多个字符时下标会出现异常,需要加上$符号改变正则查询位置
let str = "1234567890";
let newStr = str.replace(/\B(?=(\d{3})+$)/g, ",");
console.log(newStr); // 1,234,567,890