忽略两个正则表达式匹配项之间的字符串

时间:2019-07-23 15:37:53

标签: javascript regex ecmascript-6 greasemonkey

我有以下正则表达式:

/Name:\s+(.*)\s+Company:\s+(.*)\s+Email:\s+(.*)\s+Phone:\s+(.*)\s+Inquiry:\s+(.*)\s+Comments:\s+(.*)/g

我正在针对以下匹配项进行测试:

Name: London Brown
Company: Amazon.com
Email: london@example.com
Phone: 2065550000
Inquiry: Technical
Comments: Example comment

我想修改此RegExp以忽略“查询:技术”是否存在于字符串中,因为此数据有时存在而有时不存在。这样,以下内容也将被接受:

Name: London Brown
Company: Amazon.com
Email: london@example.com
Phone: 2065550000
Comments: Example comment

由于这是一个单一的脚本,所以我无法控制源数据。

1 个答案:

答案 0 :(得分:2)

您可以使用可选的非捕获组(?:Inquiry:\s+(.*)\s+)?

例如

Name:\s+(.*)\s+Company:\s+(.*)\s+Email:\s+(.*)\s+Phone:\s+(.*)\s+(?:Inquiry:\s+(.*)\s+)?Comments:\s+(.*)

Regex demo