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 |二部
答
非正则表达式的答案:
str.split("|").join(
" ".repeat(9 /*whitespaces*/) + "|"
)
或用正则表达式的可能:
str.replace(/\|/," ".repeat(9)+"|")
答
你可以使用padStart和padEnd。因为你说你想要他们有一定的长度。
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
*只有JavaScript regex.replace()*?为什么?斯普利特在这里可能更优雅... –
你能告诉什么是预期的输出吗? –
预期输出:teststring |秒 –