2017-10-24 6 views
-2

私はこのようなサンプル文字列を持っていました。RegExは、javascriptを使用してhtmlコンテンツ文字列の間に英語テキストを抽出します

私はJavaScriptで英語のテキストを抽出する正規表現を必要とする
<br> My first word, sentence 
<div class='test'><span class='abc'></span> 
</div> <br>between 1185–1667 <div> my second sentence, 1223 <span>some nested text 123</span></div> 
<span> my third word, asdf 1234 and fourth word</span> 

、この

var result=[ 
"My first word, sentence", 
"between", 
"my second sentence", 
"some nested text", 
"my third word, asdf", 
"and fourth word" 
] 

ようになり、結果が

+1

そして、何あなたがネストされた要素を見つけた場合は? –

+0

こんにちは、順番に英語のテキストを抽出するだけで、ネストされた要素シーケンスは必要ありません。最後の文字列は左から右へ - 質問で更新されました。 – Kiran

+0

@Kiran JavaScriptの正規表現はそのタスクには十分強力ではありません。 –

答えて

1
あなたが行うことができ

str = "<br> My first word, sentence <div class='test'><span class='abc'></span></div> <br>between 1185–1667 <div> my second sentence, 1223 <span>some nested text 123</span></div><span> my third word, asdf 1234 and fourth word</span>"; 
 

 
function getEnglishText(text){ 
 
    var arr = text.replace(/\s?[0-9][^A-z<>]+/g, '<a>').split(/\s?<[^<>]+>\s?/g); 
 
    for(var i=0;i<arr.length;i++){ 
 
     arr[i] = arr[i].replace(/,$/,''); 
 
     if(/(^\s+$|^$)/.test(arr[i])){ 
 
      arr.splice(i,1); 
 
      i--; 
 
     } 
 
    } 
 
    return arr; 
 
} 
 

 
console.log(getEnglishText(str));

+0

私の要件のために偉大な働きありがとう – Kiran

1

は、[OK]を、この結果を達成するためにどのように誰かの助けに感謝、私はドンので、正規表現はこの状況に適しているとは思わないし、これが私たちのものだと分かっていないが、ここで私が作ったのは

const data = `<br> My first word, sentence 
 
<div class='test'><span class='abc'></span> 
 
</div> <br>between 1185–1667 <div> my second sentence, 1223 </div> 
 
<span> my third word, asdf 1234 and fourth word</span>` 
 

 
function split(html) { 
 
    const regex = /<.*?>([^]*?)(?=<.*?>)/g 
 
    let tmp, out = [] 
 
    while (tmp=regex.exec(html)) { 
 
     tmp[1] = tmp[1].trim() 
 
     if (tmp[1]) out.push(tmp[1]) 
 
    } 
 
    return out 
 
} 
 
const out = split(data) 
 

 
console.log(out)

+0

よろしくお願いします。数字を削除するためにいくつかの変更を行うことは可能ですか?実際には、最後の文字列を2つに分割する必要があります。 – Kiran

関連する問題