1

恐ろしく区切られた ID の文字列が与えられます。各 ID は、左側のスペース (' ') と右側のキャリッジ リターン ('\r') で囲まれています。この文字列を分割して、すべての ID を JavaScript で取得したいと考えています。

例: ' hey\r my\r name\r is\r'の配列を返す必要があります['hey', 'my', 'name', 'is']

これまでのところ、私は試しました:

str.split(/ (.+)\r/g)
str.split(/(?:\s)(.+)(?:\r)/)
str.split(/\s(.+?=\r)/)

ほとんど役に立たない。で最も近くなりましたが、次のstr.split(/(?:\s)(.+)(?:\r)/)ようになります ['', 'hey', '', 'my', '', 'name', '', 'is', '']。空の文字列に一致するものは何ですか?

これに一致する正規表現は何ですか?

編集:

ID には他の空白文字を含めることができるため、これは有効な ID です: 123\t234\n. および ' abc\r 123\n456\t\r' は ['abc', '123\n456\t' ] を返す必要があります

ありがとう!

4

3 に答える 3

4

どうですか:

var parts = str.replace(/^\s+|\s+$/g, '').split(/\s+/)

つまり、先頭と末尾の空白文字を削除してから、内側の空白文字で分割します (そしてそれらをすべて消費します)。

> var str = ' hey\r my\r name\r is\r'
  undefined
> str.replace(/^\s+|\s+$/g, '').split(/\s+/)
  ["hey", "my", "name", "is"]

分割のみしたい場合\r

.split(/\r +/)

トリミングを次のように変更できます。

.replace(/^[\r ]+|[\r ]+$/g, '')
于 2012-06-06T22:31:17.340 に答える
0
\s*(\S*)\s*\r

あなたの試合はグループ1になります

JavaScriptでは、すべての一致を繰り返し処理して、そのようにキャプチャできます

var myregexp = /\s*(\S*)\s*\r/g;
var match = myregexp.exec(subject);
while (match != null) {
    for (var i = 0; i < match.length; i++) {
        // matched text: match[i]
    }
    match = myregexp.exec(subject);
}
于 2012-06-06T22:56:58.350 に答える