0

我正在尝试匹配我在 Outlook 中收到的电子邮件中的护照号码。基本上,标记可以是以下任何一种格式:

通行证1234567

通行证,11223344

通行证:1234567

护照号码是HA12345678

护照号码:G7654321

护照: 1234567(尼泊尔)

护照号123456789

护照号码: 123456789

护照号码:TG1234567

护照号码1234567

护照号码 - 5432198765

护照号码,AH123456789

护照号码:AB123456

护照/旅行证件号码:AZ0912345

我只对捕获粗体数字部分感兴趣,但它必须靠近 Pass* 标签,因为电子邮件中还有其他数字可能被误解为护照号码。

我在 Windows 7 下的 VBA (Word & Outlook) Office 2010 下使用 VBScript 正则表达式 5.5。我相信这种正则表达式的风格与 JavaScript 中使用的最密切相关?

4

2 回答 2

1

描述

此正则表达式将匹配以 2 个字母数字字符开头并以 5 到 10 个字母数字字符开头的字符串。我允许这么多字符,因为示例文本具有一系列所需的字符串大小。

\b[a-zA-Z0-9]{2}[0-9]{5,10}\b

在此处输入图像描述

输入文本

您的 14 行输入示例文本

Pass 1234567
Pass, 11223344
Pass: 1234567
Passport # is HA12345678.
Passport #: G7654321
Passport: 1234567 (Nepal)
Passport No 123456789
Passport No.: 123456789
Passport No: TG1234567
Passport Number 1234567
Passport Number - 5432198765
passport number, AH123456789
Passport Number: AB123456
Passport/Travel Document Number: AZ0912345

火柴

[0] => 1234567
[1] => 11223344
[2] => 1234567
[3] => HA12345678
[4] => G7654321
[5] => 1234567
[6] => 123456789
[7] => 123456789
[8] => TG1234567
[9] => 1234567
[10] => 5432198765
[11] => AH123456789
[12] => AB123456
[13] => AZ0912345
于 2013-06-14T01:56:11.310 回答
0
^(?:[A-Z 0-9]{2})[0-9]{5,10}$

在哪里:

  • ^表示字符串的开头。
  • (代表组的开始。
    • ?表示 0 或 1 次。
    • [A-Z 0-9]{2}表示接下来的两个字母/数字应该是 AZ/0-9 之间的任何一个。
  • )代表组的结束。
  • [0-9]{5,10}表示下一个数字应该是介于 0-9 和最小 5 和最大 10 之间的任何数字
  • $表示字符串的结尾。
于 2021-08-02T06:13:14.537 回答