我有一个14位长的数字,我需要分成这种格式:
xxx xxx xxx xxxxx
我有一个正则表达式,从结尾开始分割每3个字符(因为前瞻?)
(?=(\d{3})+(?!\d))
这给了我:
xx xxx xxx xxx xxx
我尝试在regex101.com中使用lookbehind但是我遇到了模式错误......
(?<=(\d{3})+(?!\d))
我如何使用lookbehind以便从字符串的开头开始(如果这是我的问题)以及如何重复该模式仅3次然后切换到\d{5}
?
答案 0 :(得分:2)
您可以使用类似的内容:https://regex101.com/r/yqmyvs/3
这个正则表达式是:
(?:\d{3})(?:\d{2}$)?
这基本上说:我想要三个数字的组,除非它是字符串的结尾,在这种情况下我想要5。
尽管如此,正如你的问题所评论的那样,这通常不是你通常使用正则表达式的东西。
答案 1 :(得分:2)
试试这个:
(\d{3})(\d{3})(\d{3})
并替换为:
"$1 $2 $3 "
const regex = /(\d{3})(\d{3})(\d{3})/g;
const str = `12345678901234`;
const subst = `$1 $2 $3 `;
const result = str.replace(regex, subst);
console.log( result);