代码之家  ›  专栏  ›  技术社区  ›  capt.swag

查找带有连字符的id格式的正则表达式

  •  2
  • capt.swag  · 技术社区  · 5 年前

    我正在尝试使用regex验证一个id。ID的格式如下。

    字母数字字母数字字母数字 (总长度应该是14,并且应该有两个连字符)

    下面的示例是有效的格式

    AS12-AS12-AB1C标准

    AS-12ASBC-1234标准

    N-IKNKL-A2LI40型

    这里的问题是连字符不应该出现在开头和结尾。也不应该有两个连字符在一起。

    到目前为止,我一直在用积极的前瞻来做长度匹配 (?=^.{14}$) . 并使用 (?=^[^-]*-[^-]*-[^-]*$)[a-zA-Z0-9-]+ . 所以我用的正则表达式是

    (?=^.{12}$)(?=^[^-]*-[^-]*-[^-]*$)[a-zA-Z0-9-]+
    

    这里的问题是连字符可以出现在开头,也可以出现在结尾,还有两个连字符可以一起出现,这两个连字符都不应该是有效的,这不符合我的身份验证检查。

    1 回复  |  直到 5 年前
        1
  •  1
  •   anubhava    5 年前

    您可以使用此正则表达式:

    ^(?=.{14}$)[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+){2}$
    

    RegEx Demo

    正则表达式详细信息:

    • ^ :匹配开始
    • (?=.{14}$) :lookahead条件断言我们有确切的14个输入字符
    • [a-zA-Z0-9]+ :匹配一个或多个字母数字字符
    • (?: :启动非捕获组
      • - :匹配连字符
      • [AZ-Z-Z09] :后跟一个或多个字母数字字符
    • ){2} :结束非捕获组。匹配此组的2个实例
    • $ 比赛结束