正则表达式 - 使用 space 对字符串进行分组

Regex - Group string with space

我需要将一个字符串分成 3 个字符的组。

示例:

In: 900123456 -> Out: 900 123 456
In: 90012345  -> Out: 900 123 45
In: 90012     -> Out: 900 12

有什么方法可以用正则表达式做到这一点吗?

非常感谢。

尝试使用 /\d{3}(?!\b)/gm 作为模式并使用 [=13=] 作为替换。

解释:

  • \d 来匹配一个数字。但是我们想要其中的 3 个,所以它变成 \d{3}.
  • 我们想用匹配项本身替换后跟 space。但如果它在行尾,我们不应该这样做,因为我们不想添加尾随 space。这可以通过否定前瞻来避免,以搜索带有 \b 的单词边界。这变成 (?!\b) 用于否定前瞻。

你可以在这里测试:https://regex101.com/r/MIQnF3/1

let input = document.getElementById('input');
let output = document.getElementById('output');

// In JS I had to capture the 3 digits in a group since [=10=] did not work.
let pattern = /(\d{3})(?!\b)/gm;

output.innerHTML = input.innerHTML.replace(pattern, ' ');
<p>Input:</p>
<pre><code id="input">900123456
90012345
90012</code></pre>

<p>Output:</p>
<pre><code id="output"></code></pre>