【发布时间】:2021-07-19 03:06:44
【问题描述】:
我正在尝试提取电子邮件主题中括号内的特定字符串。
这是当前代码:
var vendorNo = msg[j].getSubject().split('Vendor No:')[1].replace(/[A-Za-z-0-9]+$/,'').slice(1, -1); //vendor number from email subject
我目前使用的代码从单括号的电子邮件主题中提取供应商编号没有问题,但是当主题有多个括号时会出现问题。
例如:
电子邮件主题:供应商 A(供应商编号:12345(EDC1))
输出:123456(EDC1)
所需的输出:123456
或
邮件主题:供应商 B(供应商编号:987654)[ref:xxxxxxxxx]
输出:987654) [ref:xxxxxxxxx
所需输出:987654
当前代码不太正确,因为它提取了Vendor No: 之后的所有其他字符串,并且只删除了提取后的最后一个字符。供应商编号也可能有所不同,它可以是 5-8 个字符,并且可以是数字和字母的混合(例如 123CFT 或 1234567)。
我尝试过.slice(1, 7),但它对于字符数多或少的字符串并不灵活。
那么有没有一种解决方案,所以代码只提取特定括号内的字符串的一部分,即供应商编号?
【问题讨论】:
-
简单地使用
/\d+/ -
@decpk 厂商编号也不一定只包含数字,可以与字母混合。抱歉,我已在帖子中对其进行了编辑。
-
那么你可以使用
/\d[^\W]+/或者干脆/\d\w+/或者(?=\d)\w+ -
@Spectric 是的,感谢您指出这一点。我没有注意到错字。
标签: javascript google-apps-script gmail