2017-03-11 1 views
0

Regexpからの不一致の結果を得ることができるかどうかを知りたいと思って、この値を配列に入れます(ちょうど逆のマッチ)。Regexpを使用して配列に不一致な結果を入れるには?

str = 'Lorem ipsum dolor is amet <a id="2" css="sanitizer" href="#modal-collection" data-toggle="modal" data-target="#ae" data-toggle="modal" data-attr-custom="test">Lorem ipsum </a> the end'; 

let elementRegexp: RegExp = new RegExp('<([^>]+?)([^>]*?)>(.*?)>','g'); 
let text = str.replace(elementRegexp, ''); 
let matchElements = str.match(elementRegexp); 


console.log(text); 

//Lorem ipsum dolor is amet the end 

console.log(text); 
//["<a id="2" css="sanitizer" href="#modal-collection"…="modal" data-attr-custom="test">Lorem ipsum </a>"] 

期待される結果を::

このコードは、部分的に交換してソリューションを扱う

jsFiddle [、 "終わり" "Loremのイプサム悲しみはAMETです"]

+1

あなたは '.split()マッチした部分文字列の'元の文字列ができます

次に、あなたがこのような何かを試してみてください。 – nnnnnn

答えて

0

コメントに記載されているように、スプリット。ここでは、作業コードは次のとおりです。もちろん

"use strict"; 
 

 
let str = 'Lorem ipsum dolor is amet <a id="2" css="sanitizer" href="#modal-collection" data-toggle="modal" data-target="#ae" data-toggle="modal" data-attr-custom="test">Lorem ipsum </a> the end'; 
 

 
let elementRegexp = new RegExp('<([^>]+?)([^>]*?)>(.*?)>','g'); 
 
let text = str.replace(elementRegexp, ''); 
 
let matchElements = str.match(elementRegexp); 
 

 

 
console.log(text); 
 

 
//Lorem ipsum dolor is amet the end 
 

 
console.log(matchElements); 
 
//["<a id="2" css="sanitizer" href="#modal-collection"…="modal" data-attr-custom="test">Lorem ipsum </a>"] 
 

 
console.log(str.split(matchElements));

、これはあなたが複数の個別の一致を持って、より一般的な状況では動作しません。あなたはそれのためにもう少し精巧なものが必要になります。

"use strict"; 
 

 
let str = 'Lorem ipsum <a>another</a> dolor is amet <a id="2" css="sanitizer" href="#modal-collection" data-toggle="modal" data-target="#ae" data-toggle="modal" data-attr-custom="test">Lorem ipsum </a> the end'; 
 

 
let elementRegexp = new RegExp('<([^>]+?)([^>]*?)>(.*?)>','g'); 
 
let text = str.replace(elementRegexp, ''); 
 
let matchElements = str.match(elementRegexp); 
 

 

 
console.log(text); 
 
console.log(matchElements); 
 

 
let newStr = str; 
 
matchElements.forEach((match, idx) => { 
 
    if (idx < matchElements.length - 1) { 
 
    newStr = newStr.split(match).join(''); 
 
    } else { 
 
    newStr = newStr.split(match); 
 
    } 
 
}); 
 
console.log(newStr);

関連する問題