首页 > 解决方案 > 如何在javascript中从正则表达式的开头拆分字符串

问题描述

例如,我在字符串中有一些数据

const rawData = `1   Jon Doe 3434 535 3 3 353 HI 3535
2    Jane Smith 23 5235 5 5 2352 HELLO 3543
3      Some Guy 4534 35 5345 4 5345 MEOW 4354`

我想使用 .split() 方法使每一行(从订单号开始到最后一个值的末尾)在数组中都有自己的值。

我努力了

rawData.split(/([0-9]+\s+[A-Z][a-z])/g);

正则表达式找到一个数字后跟一些空格,然后是一个大写字母和一个小写字母(订单号直到名字的开头)

这返回

["", "1 Jo", "n Doe 3434 535 3 3 353 HI 3535", "2 Ja", "ne Smith 23 5235 5 5 2352 HELLO 3543", "3 So", "me Guy 4534 35 5345 4 5345 MEOW 4354"]

我想通过在正则表达式的开头拆分字符串来获得 3 个值。所以我想结束:

["1 Jon Doe 3434 535 3 3 353 HI 3535", "2 Jane Smith 23 5235 5 5 2352 HELLO 3543", "3 Some Guy 4534 35 5345 4 5345 MEOW 4354"]

我可以想到一个解决方法,使用 for 循环在之后加入数组中的值。我很好奇是否有办法在一条线上做到这一点。谢谢!

编辑

我刚刚在正则表达式中发现了前瞻,这很有效:

rawData.split(/\s(?=\d+\s+[A-Z][a-z])/g);

标签: javascriptarraysregexsplit

解决方案


为什么不按新行拆分?

const rawData = `1   Jon Doe 3434 535 3 3 353 HI 3535
2    Jane Smith 23 5235 5 5 2352 HELLO 3543
3      Some Guy 4534 35 5345 4 5345 MEOW 4354`,
    result = rawData.split(/\n/);

console.log(result);


推荐阅读