Regex 查找带有连字符的ID格式的正则表达式
我正在尝试使用正则表达式验证id。id的格式如下所示 字母数字字母数字(总长度应为14,且应有两个连字符) 以下示例为有效格式 AS12-AS12-AB1C AS-12ASBC-1234 N-IKNKL-A2LI40 这里的问题是连字符不应该出现在开头,也不应该出现在结尾。而且两个连字符不应该在一起 到目前为止,我正在使用正向前瞻进行长度匹配Regex 查找带有连字符的ID格式的正则表达式,regex,Regex,我正在尝试使用正则表达式验证id。id的格式如下所示 字母数字字母数字(总长度应为14,且应有两个连字符) 以下示例为有效格式 AS12-AS12-AB1C AS-12ASBC-1234 N-IKNKL-A2LI40 这里的问题是连字符不应该出现在开头,也不应该出现在结尾。而且两个连字符不应该在一起 到目前为止,我正在使用正向前瞻进行长度匹配(?=^.{14}$)。并使用(?=^[^-]*-[^-]*-[^-]*-[^-]*$)[a-zA-Z0-9-]+匹配其他连字符逻辑。所以我用的正则表达式是
(?=^.{14}$)
。并使用(?=^[^-]*-[^-]*-[^-]*-[^-]*$)[a-zA-Z0-9-]+
匹配其他连字符逻辑。所以我用的正则表达式是
(?=^.{12}$)(?=^[^-]*-[^-]*-[^-]*$)[a-zA-Z0-9-]+
这里的问题是连字符可以出现在开头和结尾,两个连字符也可以出现在一起,这两个连字符都应该无效,并且不符合我的id验证检查。您可以使用此正则表达式:
^(?=.{14}$)[a-zA-Z0-9]+(?:-[a-zA-Z0-9]+){2}$
正则表达式详细信息:
:匹配开始^
:用于断言我们有精确的14个输入字符的先行条件(?=.{14}$)
:匹配1个或多个字母数字字符[a-zA-Z0-9]+
:启动非捕获组(?:
:匹配连字符-
:后跟1个或多个字母数字字符[a-zA-Z0-9]+
:结束非捕获组。匹配此组的2个实例){2}
:匹配结束$
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。您也可以使用lookahead as(?=.{14}$)
,因为我们以后只匹配字母数字和连字符。如果这是一个更好的解决方案,请您更新上面的答案,这不是更好,而是更短一点。更新答案。