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

Regex 查找带有连字符的ID格式的正则表达式,regex,Regex,我正在尝试使用正则表达式验证id。id的格式如下所示 字母数字字母数字(总长度应为14,且应有两个连字符) 以下示例为有效格式 AS12-AS12-AB1C AS-12ASBC-1234 N-IKNKL-A2LI40 这里的问题是连字符不应该出现在开头,也不应该出现在结尾。而且两个连字符不应该在一起 到目前为止,我正在使用正向前瞻进行长度匹配(?=^.{14}$)。并使用(?=^[^-]*-[^-]*-[^-]*-[^-]*$)[a-zA-Z0-9-]+匹配其他连字符逻辑。所以我用的正则表达式是

我正在尝试使用正则表达式验证id。id的格式如下所示

字母数字字母数字(总长度应为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个实例
  • $
    :匹配结束

您使用的是哪种语言的正则表达式引擎?或者换句话说,输入中是否总是需要两个连字符?需要两个连字符@Anubhavaluage是Kotlin@hjpotter92,但这有关系吗?我对正则表达式的了解很少。所以不确定正则表达式模式是否基于语言匹配。@hjpotter92:您的正则表达式匹配
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。您也可以使用lookahead as
(?=.{14}$)
,因为我们以后只匹配字母数字和连字符。如果这是一个更好的解决方案,请您更新上面的答案,这不是更好,而是更短一点。更新答案。