我正在尝试使用正则表达式验证id。ID 采用以下格式。
alphaNumeric-alphaNumeric-alphaNumeric(总长度应为 14,并且应有两个连字符(
以下示例是有效格式
AS12-AS12-AB1C
AS-12ASBC-1234
N-IKNKL-A2LI40
这里的问题是连字符不应该出现在开头和结尾。而且两个连字符也不应该在一起。
到目前为止,我正在使用积极的展望来做长度匹配(?=^.{14}$)
。并使用(?=^[^-]*-[^-]*-[^-]*$)[a-zA-Z0-9-]+
匹配其他连字符逻辑。所以我使用的正则表达式是
(?=^.{12}$)(?=^[^-]*-[^-]*-[^-]*$)[a-zA-Z0-9-]+
这里的问题是连字符可以在开头和结尾出现,以及两个连字符可以组合在一起,这两个连字符都不应该有效,并且违反了我的 ID 验证检查。
您可以使用此正则表达式:
^(?=.{14}$)[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+){2}$
正则表达式演示
正则表达式详细信息:
^
: 比赛开始(?=.{14}$)
:前瞻条件,用于断言我们有确切的 14 个字符的输入[a-zA-Z0-9]+
:匹配 1 个或多个字母数字字符(?:
:启动非捕获组-
:匹配连字符[a-zA-Z0-9]+
:后跟 1 个或多个字母数字字符
){2}
:结束非捕获组。匹配此组的 2 个实例$
: 比赛结束