javascript - 如何从 12 位数字的开头获取所有文本并使用正则表达式对它们进行分组

标签 javascript regex

我有以下格式的文本,但我想要的是从找到的 12 位数字的开头选择单词并对其进行分组,并在下一个 12 位数字的开头停止,这些数字也应该组合在一起。

例如,在我下面的文字中,应将以下内容组合在一起:

011111111111 CDGH, LGF ADF : 203 HYT LOREM IPSUM / LOREM IPSUM COUNTY : GTYH CHIDGER L. IPSUM THJ. DATE: 07/21/2000 LOREM IPSUM DOLOT & LOREM IPSUM 768 LOREM IPSUM, 67TH LOREM IPSUM IPSUM. DTEA: NIGER, GA 12345 LOREM IPSUM DOLOT 97 LOREM IPSUM
DOLOT, KY 35678-8765

还有

0222222222222 CDGH, LGF ADF : 203 HYT LOREM IPSUM / LOREM IPSUM COUNTY : GTYH johjk L. IPSUM THJ. DATE: 07/21/2000 LOREM IPSUM DOLOT & LOREM IPSUM 768 LOREM IPSUM, 67TH LOREM IPSUM IPSUM. DTEA: NIGER, GA 12345 LOREM IPSUM DOLOT 97 LOREM IPSUM
DOLOT, KY 35678-8765

这是整个文档的样本

LOREM IPSUM LOR IPSUM DDDDDDDDD FG SSSSS NUMBER
106/03/2019 LOREMFG GH LOREMIPSUMF
LOREM OPFRTE ERTIO
LOREMIPS LOREMIOS 05/30/2019 DERTE TH LOREM (LWA LTD)------------------------------------------------------------------------------------------------------------------------------------011111111111 CDGH, LGF ADF : 203 HYT LOREM IPSUM / LOREM IPSUM COUNTY : GTYH CHIDGER L. IPSUM THJ. DATE: 07/21/2000 LOREM IPSUM DOLOT & LOREM IPSUM 768 LOREM IPSUM, 67TH LOREM IPSUM IPSUM. DTEA:
NIGER, GA 12345 LOREM IPSUM DOLOT
97 LOREM IPSUM DOLOT, KY 35678-8765 0222222222222 CDGH, LGF ADF : 203 HYT LOREM IPSUM / LOREM IPSUM COUNTY : GTYH johjk L. IPSUM THJ. DATE: 07/21/2000 LOREM IPSUM DOLOT & LOREM IPSUM 768 LOREM IPSUM, 67TH LOREM IPSUM IPSUM. DTEA:
NIGER, GA 12345 LOREM IPSUM DOLOT
97 LOREM IPSUM DOLOT, KY 35678-8765 011111111111
CDGH, LGF ADF : 203 HYT LOREM IPSUM / LOREM IPSUM COUNTY : GTYH CHIDGER L. IPSUM THJ. DATE: 07/21/2000 LOREM IPSUM DOLOT & LOREM IPSUM 768 LOREM IPSUM, 67TH LOREM IPSUM IPSUM. DTEA:
NIGER, GA 12345 LOREM IPSUM DOLOT
97 LOREM IPSUM DOLOT, KY 35678-8765

我编写的代码只选择了 12 位数字和空格,但忽略了它们之间的文本。 Link to the regex101 I have written for this purpose

(\b\d{12}\s*\b[A-Za-z0-9_.]*+\s+)

最佳答案

如果 12 位数字也可以在同一行上,您可以在模式的开头使用单词边界,并使用具有正前瞻性的非贪婪量词。

如果值可以跨越多行并且可以在同一行出现两次,您可以考虑使用 [\s\S]+? 而不是 .+?

\b\d{12}\b.+?(?=\b\d{12}\b|$)

部分

  • \b\d{12}\b 匹配单词边界之间的 12 位数字
  • .+? 匹配除换行符以外的任何字符 1+ 次非贪婪
  • (?=\b\d{12}\b|$) 正面前瞻,断言右边的是被单词边界包围的 12 位数字或字符串的末尾。

Regex demo

关于javascript - 如何从 12 位数字的开头获取所有文本并使用正则表达式对它们进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58168728/

相关文章:

javascript - 当其中一个路由中的模板引用相同 ID 时,Vue-Routes 无法运行

javascript - 文本及其下拉列表不在一行中

python - 正则表达式 - 计算短串联重复的最大数量

python - 如何使用 re.match 查找数字?

javascript - Electron 不监听按键事件

javascript - Facebook 像素助手显示购买事件有效,但 Facebook 事件管理器未显示

javascript - freemarker 替换 & 和 &

regex - 解析shell脚本中的键值

php - 将字符串分解为字段

javascript - 如何在滚动条上显示 React 组件