用于验证唯一交易标识符的正则表达式
Regex to validate 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]$
秘诀是负面展望 (?!.*[.:_-]{2})
,断言(不消耗输入)以下文本不[=25] =] 包含 2 个连续的 "special" 个字符 .:_-
.
请注意,您使用 \w
的尝试也允许使用小写字母和下划线,因为
\w
等同于 [a-zA-Z0-9_]
我正在尝试编写一个正则表达式模式来验证唯一事务标识符 (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]$
秘诀是负面展望 (?!.*[.:_-]{2})
,断言(不消耗输入)以下文本不[=25] =] 包含 2 个连续的 "special" 个字符 .:_-
.
请注意,您使用 \w
的尝试也允许使用小写字母和下划线,因为
\w
等同于 [a-zA-Z0-9_]