最初のホワイトスペースで文字列を分割する

最初の空白に基づいて文字列を分割する最適な正規表現は得られませんでした。

var str="72 tocirah sneab";

を取得する必要があります。

[
    "72",
    "tocirah sneab",
]
ソリューション

スペース文字だけを気にして(タブや他のホワイトスペース文字は気にしない)、最初のスペースの前のすべてと最初のスペースの後のすべてだけを気にする場合は、次のように正規表現を使わずにできます。

str.substr(0,str.indexOf(' ')); // "72"
str.substr(str.indexOf(' ')+1); // "tocirah sneab"

なお、スペースが全くない場合は、1行目は空の文字列を返し、2行目は文字列全体を返します。 それがその状況で望む動作であることを確認してください(あるいはその状況が起こらないことを確認してください)。

解説 (2)

Javascriptはlookbehindsをサポートしていないので、splitはできません。しかし、matchは動作します。

str.match(/^(\S+)\s(.*)/).slice(1)

もうひとつの仕掛け。

str.replace(/\s+/, '\x01').split('\x01')

はどうでしょうか。

[str.replace(/\s.*/, ''), str.replace(/\S+\s/, '')]

そして、なぜか

reverse = function (s) { return s.split('').reverse().join('') }
reverse(str).split(/\s(?=\S+$)/).reverse().map(reverse)

または多分

re = /^\S+\s|.*/g;
[].concat.call(re.exec(str), re.exec(str))

2019 update: ES2018の時点で、ルックビズがサポートされています。


str = "72 tocirah sneab"
s = str.split(/(?
解説 (2)
var arr = [];             //new storage
str = str.split(' ');     //split by spaces
arr.push(str.shift());    //add the number
arr.push(str.join(' '));  //and the rest of the string

//arr is now:
["72","tocirah sneab"];

しかし、もっと早い方法があると思います。

解説 (0)