正则表达式 - 使用 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>
我需要将一个字符串分成 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>