电子邮件主机是否具有后端存档平台。我问他们是否可以在电子邮件中找到某些格式的警报,他们要求我向他们提交一个RegEx查询字符串,以便他们可以将其放入该系统中。我知道那里的主要电子邮件系统是Exchange,但是我不确定到底有什么后端。...我假设正在交换,我很抱歉,我什至没有想到要求提供该信息。
需要查找以下数字格式(用于社会保险#格式)
9位数格式:
XXX-XX-XXXX
XXXXXXXXX
XX-XXXXXXX
需要查找以下数字格式(适用于客户帐户编号格式)
8位数字格式:
xxxxxxxx
我还没有尝试过任何东西,因为我不确定如何在不提交主机的情况下进行测试。但这就是我想出的两种st法来完成8位和9位数字模式的任务
Regex.Match([/d]+[/d]+\-?[/d]+\-?[/d]+[/d-]+\-?[/d]+[/d]+[/d]+[/d]);
``
Regex.Match([/d]+[/d]+[/d]+[/d]+[/d]+[/d]+[/d]+[/d]);
我希望输出是与数字序列模式匹配的任何电子邮件
答案 0 :(得分:0)
我将使用以下正则表达式模式,这是三个术语的替代:
\d{8}\d?|\d{3}-\d{2}-\d{4}|\d{2}-\d{7}
请注意,正则表达式中的单个数字由\d
表示,带有单个反斜杠,而不是正斜杠。
答案 1 :(得分:0)
为简单起见,您可能希望设计一个简单的表达式,也许类似于this,以便随时随地易于更改:
([0-9]{3}-[0-9]{2}-[0-9]{4})|([0-9]{9})|([0-9]{2}-[0-9]{7})|([0-9]{8})
每个数字都有四个分组:
([0-9]{3}-[0-9]{2}-[0-9]{4})
for SSN type 1 ([0-9]{9})
for SSN type 2 ([0-9]{2}-[0-9]{7})
用于SSN类型3 ([0-9]{8})
用于客户帐号您只需使用OR即可加入此论坛:
([0-9]{3}-[0-9]{2}-[0-9]{4})|([0-9]{9})|([0-9]{2}-[0-9]{7})|([0-9]{8})
如果您希望有两个单独的表达式,则可能希望将前两个表达式连接起来:
([0-9]{3}-[0-9]{2}-[0-9]{4})|([0-9]{9})|([0-9]{2}-[0-9]{7})
,第二个表达式的工作方式为:
([0-9]{8})
您可以根据需要添加其他边界。例如,您可以将它们与开始和结束字符绑定:
^([0-9]{3}-[0-9]{2}-[0-9]{4})|([0-9]{9})|([0-9]{2}-[0-9]{7})|([0-9]{8})$
^([0-9]{3}-[0-9]{2}-[0-9]{4})|([0-9]{9})|([0-9]{2}-[0-9]{7})$
^([0-9]{8})$
此图显示了表达式的工作方式,您可以在此link中可视化其他表达式:
const regex = /([0-9]{3}-[0-9]{2}-[0-9]{4})|([0-9]{9})|([0-9]{2}-[0-9]{7})|([0-9]{8})/gm;
const str = `111-22-3333
111223333
11-1234567
12345678`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.log(`Found match, group ${groupIndex}: ${match}`);
});
}