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

Zer*_*One 3 regex

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

([A-Z]{2})([A-Z0-9]{10})
Run Code Online (Sandbox Code Playgroud)

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

因此,一些例子是US45256BAD38,US64118Q1076,XS0884410019.什么是正确的RegEx来搜索它们,没有类似的匹配ABCDEFGHIJKL

也许RegEx至少有一个号码?

小智 7

如果根据维基百科的定义你不能使用前瞻,你也可以检查最后一个字符是否是一个数字,因为它应该是校验位.

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})
Run Code Online (Sandbox Code Playgroud)


anu*_*ava 0

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

\b([A-Z]{2})((?![A-Z]{10}\b)[A-Z0-9]{10})\b
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

(?![A-Z]{10}\b)是负向先行,如果所有 10 个字符都是前 2 个字符之后的字母,则匹配失败。