Regex 用于验证唯一事务标识符的正则表达式

Regex 用于验证唯一事务标识符的正则表达式,regex,uti,unique-transaction-identifier,Regex,Uti,Unique Transaction Identifier,我正在尝试编写一个正则表达式模式来验证唯一事务标识符(UTI)。请参阅说明: UTI由两个连接的部分组成,前缀和事务标识符。以下是我试图考虑的规则摘要: 前缀正好是10个字母数字字符 事务标识符的长度为1-32个字符 事务标识符为字母数字,但也允许使用以下特殊字符::- 特殊字符不能出现在事务标识符的开头或结尾 一行中不允许有两个特殊字符 到目前为止,我已经构建了一个模式来验证这些点中前4点的UTI(与忽略的套管匹配): 然而,我正在与最后一点斗争(一行中没有两个特殊字符)。我很乐意承认,当

我正在尝试编写一个正则表达式模式来验证唯一事务标识符(UTI)。请参阅说明:

UTI由两个连接的部分组成,前缀和事务标识符。以下是我试图考虑的规则摘要:

  • 前缀正好是10个字母数字字符
  • 事务标识符的长度为1-32个字符
  • 事务标识符为字母数字,但也允许使用以下特殊字符:
    :-
  • 特殊字符不能出现在事务标识符的开头或结尾
  • 一行中不允许有两个特殊字符
到目前为止,我已经构建了一个模式来验证这些点中前4点的UTI(与忽略的套管匹配):

然而,我正在与最后一点斗争(一行中没有两个特殊字符)。我很乐意承认,当谈到正则表达式时,我是一个新手,我想可能有一些更先进的技术,我不熟悉来完成这项工作。有没有任何雷格士大师愿意启发我


已解决:感谢用户Bohemian帮助我找到我所寻找的模式。我的最终解决方案如下所示:

^[a-zA-Z0-9]{11}((?!.*[.:_-]{2})[a-zA-Z0-9.:_-]{0,30}[a-zA-Z0-9])?$
如果有人有任何进一步的改进建议,我会将问题留待后续回答。

试试以下方法:

^[A-Z0-9]{11}(?!.*[.:_-]{2})[A-Z0-9.:_-]{0,30}[A-Z0-9]$
秘方是否定的前瞻
(?!.[.:-]{2})
,它断言(不使用输入)以下文本不包含两个连续的“特殊”字符
:\u-


请注意,使用
\w
的尝试也允许使用小写字母和下划线,因为
\w
[a-zA-Z0-9_]

您的正则表达式建议字母必须是大写。这是真的吗?小写字母也是“字母数字”。@Bohemian:是的,我实际上是在启用忽略大小写的情况下运行匹配引擎,我对此做了一点评论。谢谢,这正是我要找的!我做了一个小的调整,在上面的编辑中发布了我的最终解决方案。
^[A-Z0-9]{11}(?!.*[.:_-]{2})[A-Z0-9.:_-]{0,30}[A-Z0-9]$