如何通过第一个数字出现将字符串分成两部分?

Abs*_*ner -1 javascript regex split substring

有这样的字符串

str = "word 12 otherword(s) 2000 19"
Run Code Online (Sandbox Code Playgroud)

或者像这样

str = "word word 12 otherword(s) 2000 19"
Run Code Online (Sandbox Code Playgroud)

我需要将字符串一分为二,以获得这样的数组:

newstr[0] = first part of the string (即第一种情况下的“word”,第二种情况下的“word word”);

newstr[1] = rest of the string (即“12 otherword(s) 2000 19”在这两种情况下)。

我尝试使用splitand完成此操作regex,但没有成功:

str.split(/\d.*/)返回Array [ "word ", "" ]Array [ "word word ", "" ]

str.split(/^\D*/gm)返回Array [ "", "12 otherword(s) 2000 19" ]

你能给我一个建议吗?即使不使用splitand regex- 如果有更好/更快的(Vanilla JavaScript)解决方案。

jun*_*var 6

这里发生了 3 件事。

  1. String.split 通常不会在返回数组中包含匹配的分隔符。所以分裂abc.split('b')会回来['a', 'c']。可以通过使用匹配的正则表达式组来更改此行为;即添加括号'abc'.split(/(b)/)将返回['a', 'b', 'c']

  2. String.split 将使分隔符与其他元素分开。即'abc'.split(/(b)/)会返回3个元素['a', 'b', 'c']。后缀正则表达式.*以组合最后两个元素:'abc'.split(/(b.*)/)将返回['a', 'bc', '']

  3. 最后,为了忽略最后一个空元素,我们发送2.

let str = "word word 12 otherword(s) 2000 19";
let splitStr = str.split(/(\d.*)/, 2);
console.log(splitStr);
Run Code Online (Sandbox Code Playgroud)