【发布时间】:2020-08-18 20:25:58
【问题描述】:
要匹配无破折号校验和,我可以执行以下操作:
\b[0-9a-z]{32}\b
但是,我看到一些校验和也有破折号,例如:
d3bd55bf-062f-473b-9417-935f62c4c98a
虽然这可能是一个固定大小,先是 8,然后是 4,然后是 4,然后是 4,然后是 12,但我想知道我是否可以做一个正则表达式,其中非破折号数字的数量 加起来 32. 我认为答案是否定的,但希望某个正则表达式向导可以提出一些建议。
这里是一些示例输入的起点:https://regex101.com/r/K0IMKe/1。
【问题讨论】:
-
试试
\b(?:[0-9a-z]-?){32}\b。或者,\b[0-9a-z](?:-?[0-9a-z]){31}\b,如果最后不能有-。 -
@WiktorStribiżew 谢谢,你能解释一下答案是如何工作的吗?
-
或者如果可以有 0 - 4 个破折号,您可以断言 32 - 36 个字符
^(?=[a-z0-9-]{32,36}$)[a-z0-9]+(?:-[a-z0-9]+)*$regex101.com/r/JM3EP6/1