用于验证唯一交易标识符的正则表达式

标签 regex uti unique-transaction-identifier

我正在尝试编写一个正则表达式模式来验证唯一事务标识符(UTI)。查看描述:here

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

  • 前缀正好是 10 个字母数字字符。
  • 交易标识符的长度为 1-32 个字符。
  • 交易标识符是字母数字,但也允许使用以下特殊字符:。 :_-
  • 特殊字符不能出现在交易标识符的开头或结尾。
  • 不允许连续出现两个特殊字符。

到目前为止,我已经构建了一个模式来验证前 4 个点的 UTI(与忽略的大小写匹配):

^[A-Z0-9]{11}((\w|[:\.-]){0,30}[A-Z0-9])?$

但是我正在努力解决最后一点(连续没有两个特殊字符)。我承认在正则表达式方面我是个新手,我想可能有一些我不熟悉的更高级的技术来完成这个任务。有正则表达式专家愿意启发我吗?


已解决:感谢用户 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]$

secret 武器是消极前瞻(?!.*[.:_-]{2}),它断言(不消耗输入)以下文本包含2个连续的“特殊”字符.:_-


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

相同

关于用于验证唯一交易标识符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46773567/

相关文章:

ios - 为 iCloud "Manage Storage"列表指定应用名称

ios - ios swift 无法从 UIDocumentPickerViewController 获取 .doc 文件

iphone - 其他应用程序在 iOS 5 中粘贴 HTML,而不是粘贴板数据的文​​本版本

单行上的python正则表达式语句

c++ - boost::regex 与 UTF-8 不区分大小写匹配(例如,大写与小写变音)

python - 每个算术运算符仅匹配一次

regex - 正则表达式匹配不包含单词的行