我正在尝试制作一个正则字符串(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
您几乎拥有:
(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}$
根据需要锚定样式()。