我正在制作一个基于客户端浏览器生成的UUID的验证器,我使用它来识别用户发送的特定类型的数据;并希望验证客户端发送的UUID实际上是有效的Version 4 UUID.

我找到了这个PHP preg_match UUID v4,很接近,但不完全是我要找的.我想知道是否存在类似is_empty()strtodate()的内容,如果字符串无效,则发送FALSE.

我可以基于正则表达式进行测试,但我想用更自然的方法来测试它.

有什么 idea 吗?

11/23/2019 EDIT:关于重复标签,虽然主持人在技术上是正确的,但这个问题的目的是向regex提供其他东西(如果存在),其次,这个问题已经成为Python 和PHPER的参考,并且有不同的答案/方法来解决这个问题,他们的答案在总体上得到了更好的解释.这就是为什么我认为这个问题应该得到解决.

推荐答案

版本4 UUID的格式为xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,其中x是任何十六进制数字,y89AB中的一个.

^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$

要允许使用小写字母,请使用i个修饰符→

$UUIDv4 = '/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i';
preg_match($UUIDv4, $value) or die('Not valid UUID');

Php相关问答推荐

相同的数组(一个来自func_get_args(),另一个显式构建)在用作参数时并不相同

为什么这个方法调用用引号和花括号包裹?

Laravel迁移返回SQL错误,但SQL有效且工作正常

从含有特殊字符的ANSI文本文件中读取数据是在移值,为什么?

使用列入黑名单的单词和自定义业务逻辑的组合将特定的子字符串包装在HTML标记中

将SVG包含在另一个php生成的SVG中

FlySystem v3:使用本地适配器时出现问题

如何在execute语句中使用存储过程参数?

登录后重定向在WooCommerce中购买产品的用户

为什么PHP PDO忽略NOT NULL约束?

Shopware 6插件:由于删除了配置密钥,更新后配置值不正确

Woocommerce 仅在前端为登录用户提供价格折扣

对产品/库存结果集进行分组和计数,形成多维分层数组

WooCommerce:如果购物车中已存在产品,则增加购物车商品数量

过滤会员计划标题和标签

从图像URL中获取文件扩展名?

如何使用 WhatsApp Cloud API 向 WhatsApp 发送消息,而无需在发送消息之前注册收件人号码?

在 WordPress 中使用 $wpdb 运行 MySQL 事务是否安全?

PDO 和 SQL 查询结果中日期格式不同的原因可能是什么?

在 laravel 中更新表单时如何在 Select 选项中保留旧值?