2016-08-09 15 views
1

サブライムテキスト、アトム、またはVisual Studioコードなどのエディタのスニペットには、タブストップを含めることができます。これらのタブストップには、中括弧で囲まれたプレースホルダテキスト(例:${1:placeholder text})が含まれていない限り、ドル記号とそれに続く数字(例:$1)でマークされます。私はJavaScriptでこれらのタブストップの試合THES番号をしようとしている:タブストップ内の一致番号

str = "Match $1 and ${2:yay} then ignore 3 and match $4 again" 
re = /(?:\${?)\d+/g 
arr = str.match(re) 

私は結果の配列は、整数のみが含まれていることを期待する代わりに、それは次のようになります。["$1", "${2", "$4"]。同時に、タブストップの一部ではないすべての数字を無視して

は、どのように私は、数字のみを取得することができます(例えば、上記str 3)

+0

:と撮影した値をつかむためにループ内でexecを実行する - /\${?(\d+)/gを - あなたは維持する必要があるパターンの周り

使用取り込みグループ '[" $ 1 "、" $ {2 "、" $ 4 "}' – RomanPerekhrest

答えて

1

非キャプチャグループ(?:\${?)String#matchはマッチの一部を無視しません。あなたはまた、非数字を置き換えることができます

var str = "Lorem $1 ipsum ${2:yay} ignore 3 and so forth $4" ; 
 
var re = /\${?(\d+)/g; 
 
var arr = []; 
 
while((m=re.exec(str)) !== null) { 
 
    arr.push(m[1]); 
 
} 
 
console.log(arr);

関連する問題