首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何提取带有多个括号/括号的电子邮件主题中的特定字符串?

如何提取带有多个括号/括号的电子邮件主题中的特定字符串?
EN

Stack Overflow用户
提问于 2021-07-19 03:06:44
回答 2查看 53关注 0票数 1

我试图提取特定的字符串在一个括号内的电子邮件主题。

以下是当前代码:

代码语言:javascript
运行
复制
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)

输出: 987654) [参考:xxxxxxxxx

预期产出: 987654

当前代码并不完全正确,因为它在Vendor No:之后提取所有其他字符串,并且只在提取之后删除最后一个字符。供应商的号码也可能不同,它可以从5-8个字符,可以混合数字和字母(例如。123或1234567)。

我尝试过.slice(1, 7),但对于多少字符数的字符串,它并不灵活。

那么,是否有一个解决方案,以便代码只提取特定括号中字符串的一个部分,即供应商编号?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-19 03:26:48

您可以拆分以获得":"之后的部分,并使用String.search获取第一个字符的索引,该索引是一个特殊字符:

代码语言:javascript
运行
复制
function getVendorNo(s) {
  return  a = s.split(":")[1].trim(), a.substring(0, a.search(new RegExp("[^a-zA-Z0-9]")));
}

console.log(getVendorNo("Supplier A (Vendor No.: 12345(EDC1))"));
console.log(getVendorNo("Supplier B (Vendor No.: 987654) [ref:xxxxxxxxx]"));

票数 1
EN

Stack Overflow用户

发布于 2021-07-19 03:31:10

您可以使用任何一个正则表达式。

代码语言:javascript
运行
复制
/\d[^\W]+/

代码语言:javascript
运行
复制
/\d\w+/

代码语言:javascript
运行
复制
/(?=\d)\w+/

代码语言:javascript
运行
复制
const str = "Email Subject: Supplier A (Vendor No.: 12345(EDC1))";

const result1 = str.match(/\d[^\W]+/);
const result2 = str.match(/\d\w+/);
const result3 = str.match(/(?=\d)\w+/);

console.log(result1)
console.log(result2)
console.log(result3)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68434694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档