JS正则表达式将字符串添加到字符串

问题描述:

我有一个由两部分组成的字符串和部分总是由空格和|分隔的部分。就像这样:JS正则表达式将字符串添加到字符串

teststring | secondstring 

它可以添加使用只有JavaScript regex.replace()部分之间的空间预定义的计数?

我想是这样的:

([^\|]+)(\s){0,17}(?(R2)\s|\s)([\|a-zA-Z0-9]+) 

和替代:

$1$2$3 

有可能重复捕获组以替代例如$2{17}或多次搭配相同的空间?

编辑: 我有功能

function InvokeRegexp(originalString, pattern, replaceExpr) 
{ 
    return originalString.replace(pattern, replaceExpr); 
} 

,我想传递两部分文字,空格或者空格replaceExpr containin号码包含图案编号并获得结果:firstpart |二部

+3

*只有JavaScript regex.replace()*?为什么?斯普利特在这里可能更优雅... –

+0

你能告诉什么是预期的输出吗? –

+0

预期输出:teststring |秒 –

非正则表达式的答案:

str.split("|").join(
    " ".repeat(9 /*whitespaces*/) + "|" 
) 

或用正则表达式的可能:

str.replace(/\|/," ".repeat(9)+"|") 
+0

以前从未见过'.repeat()'。这真棒:) –

+1

它说9个空格在哪里? – lumio

+0

“...在零件之间添加预定义计数的空格” –

你可以使用padStartpadEnd。因为你说你想要他们有一定的长度。

const input = 'teststring | secondstring'; 
 

 
// Split the input variable and select spaces as well. 
 
// 1. Select multiple spaces: \s+ 
 
// 2. Select pipe: \| 
 
// 3. Select all following spaces: \s+ 
 
const parts = input.split(/\s+\|\s+/); 
 

 
// So every part should be at least 20 chars in this example. 
 
const len = 20; 
 
const output = `${ parts[ 0 ].padEnd(len) }|${ parts[ 1 ].padStart(len)}`; 
 

 
console.log(output);

+0

我无法用代码输入操作,只有字符串 –

+0

好的。我更新了我的答案 – lumio