擅长:python、mysql、java
<p>更具体地说。
这是使用破折号和不使用破折号捕捉uuid4的最精确的正则表达式,并且遵循uuid4的所有规则:</p>
<pre><code>[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}
</code></pre>
<p>你可以确保它也捕捉大写字母忽略大小写。在我使用re.I.的例子中(uuid的输出中没有大写字母,但在输入中没有失败,只是忽略了它。意思是在UUID中“f”和“f”是相同的)</p>
<p>我创建了一个验证程序来捕获它们,如下所示:</p>
<pre><code>def valid_uuid(uuid):
regex = re.compile('^[a-f0-9]{8}-?[a-f0-9]{4}-?4[a-f0-9]{3}-?[89ab][a-f0-9]{3}-?[a-f0-9]{12}\Z', re.I)
match = regex.match(uuid)
return bool(match)
</code></pre>
<p>然后你可以:</p>
<pre><code>if valid_uuid(my_uuid):
#Do stuff with valid my_uuid
</code></pre>
<p>以^开头,以Z结尾,我还确保字符串中没有其他内容。这确保“3fc3d0e9-1efb-4eef-ace6-d9d59b62fec5”返回true,但“3fc3d0e9-1efb-4eef-ace6-d9d59b62fec5+19187”返回false。</p>
<p><strong>更新-下面的python方法不是万无一失的-请参阅注释:</p>
<p>有其他方法可以验证UUID。在python中:</p>
<pre><code>from uuid import UUID
try:
UUID(my_uuid)
#my_uuid is valid and you can use it
except ValueError:
#do what you need when my_uuid is not a uuid
</code></pre>