2017-08-08 14 views
-1

私は2つの部分からなる文字列を持ち、部分は常にスペースと|で区切られています。このように:JS Regexスペースを文字列に追加

teststring | secondstring 

それだけではJavaScriptを使用してregex.replace()部品間の空間の定義済みの数を追加することが可能ですか?

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

と置換::例えば置換でキャプチャグループを繰り返す

$1$2$3 

それが可能だ

私はこのような何かを試してみました$2{17}または同じスペースを複数回マッチさせますか?

EDIT: 私は機能

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

ていると私は、スペースやスペースのreplaceExprのcontainin番号のパターン含む数を2部構成のテキストを渡し、結果を取得したい:FIRSTPARTを|

+3

* ONLYのJavaScript regex.replace()?*なぜですか?スプリットはおそらくここでよりエレガントです... –

+0

期待される出力もまた教えてください。 –

+0

期待される出力:teststring | secondstring –

答えて

0

非正規表現の答えをSECONDPART:そのおそらく

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

かと正規表現:

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

以前は '.repeat()'を見たことがありません。それは素晴らしいです:) –

+1

それは9つのスペースはどこですか? – lumio

+0

"...部品間のスペースの定義済み数を追加する" –

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

関連する問題