2016-08-10 6 views
2

を削除するために行います。カントは、私は次のdiv持っている正規表現の作品は、最初の空白文字

<div data-test="([1] Hello World), ([2] Foo Bar)"></div> 

を今私がやろうとしていますどのような次の部分に文字列を破るクリーンな方法を見つけることです。

配列["1"、 "Hello World"、 "2"、 "Foo Bar"];

これをどのように適切かつ迅速に達成できますか?

私は近づくことができましたが、私の解決策はやや醜いと思われ、期待どおりに動作しません。

var el = document.getElementsByTagName("div")[0]; 
    data = el.getAttribute('data-test'); 
    list = data.replace(/[([,]/g, '').split(/[\]\)]/); 

for(str of list) { 
    str = str.trim(); 
} 

まだ各文字列の先頭にスペースがあります。私は本当にトリムなどを使用したいとは思わない。私は正規表現に空白文字を追加しようとしましたが、それはあまりにも悪い考えでした。

答えて

2

以下の機能が動作するはずです。

function strToArr(str) { 
    var arr = []; 
    var parts = str.split(', '); 
    parts.forEach(part => { 
     var digit = part.match(/(\d+)/g)[0]; 
     var string = part.match(/(\b[a-zA-Z\s]+)/g)[0]; 
     arr.push(digit, string); 
    }); 
    return arr; 
} 
+0

真剣に、私は今実際の正規表現を学ぶ必要があります – Asperger

+0

私の例を参照してください。 – Laurianti

0

あなたは次の正規表現試すことができます。

list = data.replace(/^\(\[|\)$/g, '').split(/\] |\), \(\[|\] /); 

2つのステップ: "([" とテーリング ")" の見出しを削除

  1. がに文字列を分割デリミタ記号で指定する部分

文字列の形式が固定されているとします。

1
var text = '([1] Hello World), ([2] Foo Bar)'; 

var textReplaced = text.replace(/\(\[([^\]])\]\s([^)]+)\)/g, '$1, $2'); 

var array = textReplaced.split(', '); 

console.log(array); 

サイクルなし。

関連する問題