用于固定长度字符串的正则表达式,以多个单词开头

ste*_*tef 11 regex

我正在尝试制作一个正则字符串(JS风格),它匹配一个长度恰好为17个字母数字字符的字符串,并且必须以"AB","DE"或"GH"开头.在这3种可能性之后,接受任何字母数字字符.

比赛:

AB163829F13246915
DET639601BA167860
GHF1973771A002957
Run Code Online (Sandbox Code Playgroud)

不匹配

XYZ63829F13246915
AAA639601BA167860
BBC1973771A002957
Run Code Online (Sandbox Code Playgroud)

到目前为止,我有这个正则表达式,我正在http://regexpal.com/上测试

^(AB|)[a-zA-Z0-9]{17}$
Run Code Online (Sandbox Code Playgroud)

不知道为什么管道符号需要它来匹配我的第一个例子,或者为什么它在管道后添加"DE"时失败.

任何人?

Exp*_*lls 16

用这个:

^(AB|DE|GH)[a-zA-Z0-9]{15}$
Run Code Online (Sandbox Code Playgroud)

前两个字符已占用两个,因此之后您只需要15个字母数字字符.

http://rubular.com/r/rAWmIy4Xeh


sp0*_*00m 5

您几乎拥有:

(AB|DE|GH)[a-zA-Z0-9]{15}
Run Code Online (Sandbox Code Playgroud)

演示版

由于AB|DE|GH长度已经是2个字符,因此只能允许15个字符。

您还可以使用非捕获组((?:AB|DE|GH)[a-zA-Z0-9]{15})并^(?:AB|DE|GH)[a-zA-Z0-9]{15}$根据需要锚定样式()。