JavaScript正则表达式仅捕获第一个匹配项

JavaScript regex only capturing first match

本问题已经有最佳答案,请猛点这里访问。

enter image description here

我需要解析多个使用Google Apps脚本的电子邮件正文:

1
2
3
Name: Bob smith
Email: hellol@aol.com
Phone Number: 4243331212

我想在每一行的开头拆分标题。我有以下功能:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function parseBody (i, body) {

   var split = body.split(new RegExp(/(\w*): ([^\t

]*)[\t

]*/)) //removes trailing line feed

 .filter(function (x) { return x })

 .....


 }

但是正则表达式不起作用,只能在我在http://www.regexpal.com/上进行测试时捕获第一个标题。 我究竟做错了什么?

编辑:

enter image description here


您需要添加g标志,以确保它在第一次匹配后不会停止。

1
/(\w*):/g

演示版

然后,您的整个正则表达式为:

1
2
3
4
5
/(\w*): ([^\t

]*)[\t

]*/g

不过,您可能希望将其更改为(^[^:]+),因此您可以在第一部分中保留空格(如"电话号码"中的空格)。 另外,添加m标志以使其成为多行:

1
2
3
4
5
 /(^[^:]+): ([^\t

]*)[\t

]*/mg

演示版