关于正则表达式环视结构(断言)问题

sinat_37982018 2019-01-06 10:32:18
例子-1 结果为什么不是:,123,456,78

// 例子-1
{
let str = "12345678";
let reg = new RegExp(/(?=(?:\d{3})+)/g);
let result = str.replace(reg,',');
console.log(result);
// (?:\d{3})+ :从字符串的前端匹配 3x位数字。 所以结果是:123456
// (?=...): 加入环视结构后它就是匹配“右边数字的个数正好是3的倍数的位置” ,然后在位置上插入逗号
// 问题为什么结果不是:,123,456,78
}



// 例子-2
{
let str = "12345678";
let reg = new RegExp(/(?=(?:\d{3})+$)/g);
let result = str.replace(reg,',');
console.log(result);
// (?:\d{3})+$ : 从字符串的末端向前匹配 3x位数字。 所以结果是:345678
// (?=...): 加入环视结构后它就是匹配“右边数字的个数正好是3的倍数的位置” ,然后在位置上插入逗号
}
...全文
209 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
scscms太阳光 2019-01-07
  • 打赏
  • 举报
回复
"1524878447".replace(/(\d)(?=(\d{3})+\b)/g,"$1,")
天际的海浪 2019-01-07
  • 打赏
  • 举报
回复
(?:\d{3})+ :从字符串的前端匹配 3x位数字。 断言结果是:123456 (?=...)断言是不消耗字符的。第2次匹配是从1的后面开始匹配, 断言结果是:234567。匹配成功 第3次匹配是从2的后面开始匹配, 断言结果是:345678。匹配成功 第4次匹配是从3的后面开始匹配, 断言结果是:456。匹配成功

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧