正则表达式 - 仅匹配7个字符?

Sim*_*mon 5 .net regex

我正在尝试匹配一个SEDOL(正好是7个字符:6个字母数字字符后跟1个数字字符)

我的正则表达式

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

匹配正确,但是以有效匹配开头的大于7个字符的字符串也匹配(如果你看到我的意思:)).例如:

B3KMJP4

匹配正确,但也是如此:

B3KMJP4x

哪个不应该匹配.

谁能告诉我如何避免这种情况?

DVK*_*DVK 6

正则表达式末尾的美元符号(称为锚点)表示字符串结束:

^([A-Z0-9]{6})\d$

我还在开头添加了"^",表示字符串的开始并阻止匹配xB3KMJP4我也简化了原始的正则表达式.

顺便说一下,根据维基百科,对于第一个字符,不使用元音.我不太确定这是规则还是惯例.


cod*_*ict 5

你需要使用两者start并且end anchors像这样:

^([A-Z 0-9]{6})[0-9]{1}$
Run Code Online (Sandbox Code Playgroud)

这将匹配一个字符串,该字符串包含6个字母数字+空格字符后跟一个数字.如果找到这样的字符串作为更大字符串的后缀或前缀,则不匹配.

你也可以摆脱{1}因为自己[0-9]匹配一个数字.

也\d代表一个数字.因此,您可以按如下方式缩短正则表达式:

^([A-Z \d]{6})\d$
Run Code Online (Sandbox Code Playgroud)