我试图在Outlook中收到的电子邮件中匹配护照号码。基本上,标记可以是以下任何格式:
通过 1234567
通过, 11223344
通过: 1234567
Passport# HA12345678 。
Passport#: G7654321
护照: 1234567 (尼泊尔)
护照号码 123456789
护照号码: 123456789
护照号码: TG1234567
护照号码 1234567
护照号码 - 5432198765
护照号码, AH123456789
护照号码: AB123456
护照/旅行证件号码: AZ0912345
我只对抓取粗体部分感兴趣,但它必须非常靠近Pass *标签,因为电子邮件中还有其他数字可能被误解为护照号码。
我在Windows 7下使用VBA(Word& Outlook)Office 2010下的VBScript正则表达式5.5。我相信这种正则表达式与JavaScript中使用的最相关吗?
答案 0 :(得分: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
答案 1 :(得分:0)
^(?:[A-Z 0-9]{2})[0-9]{5,10}$
哪里:
^
表示字符串的开始。(
代表组的开始。
?
代表 0 或 1 次。[A-Z 0-9]{2}
表示接下来的两个字母/数字应该是 A-Z/0-9 之间的任何一个。)
代表组的结束。[0-9]{5,10}
表示接下来的数字应该是 0-9 和最小 5 和最大 10 之间的任何数字$
表示字符串的结尾。