具有至少1个数字的ISIN的RegEx

时间:2015-10-16 07:23:57

标签: regex

我有以下RegEx来解析喜欢,资产等的ISIN ..(2个字符后跟10位数字和字符)

([A-Z]{2})([A-Z0-9]{10})

但这也标志着像ABCDEFGHIJKL这样的词,但这不是真正的ISIN。 ISIN的定义如下:WIKI

所以有些例子是US45256BAD38US64118Q1076XS0884410019。如果没有ABCDEFGHIJKL等匹配项,那么搜索它们的正确RegEx是什么?

也许RegEx至少有一个号码?

2 个答案:

答案 0 :(得分:5)

如果您不能根据Wikipedia的定义使用前瞻性功能,也可以只检查最后一个字符是否为数字,因为它应该是校验位。

  

ISIN由两个字母字符组成,分别是发行国的ISO 3166-1 alpha-2代码,九个字母数字字符(国家证券识别码或NSIN,用于标识证券),并在必要时添加前导零)和一个数字校验位

来源:https://en.wikipedia.org/wiki/International_Securities_Identification_Number#Description

这也可以起作用:

([A-Z]{2})([A-Z0-9]{9})([0-9]{1})

答案 1 :(得分:0)

您可以使用前瞻性正则表达式:

\b([A-Z]{2})((?![A-Z]{10}\b)[A-Z0-9]{10})\b

RegEx Demo

如果所有10个字符都是前2个字符后的字母,那么

(?![A-Z]{10}\b)是一个负面的预测,如果所有10个字符都是字母,则会导致匹配失败。