我在another answer中找到了以下Javascript函数:
function createUUID() {
var s = [];
var hexDigits = "0123456789abcdef";
for (var i = 0; i < 36; i++) {
s[i] = hexDigits.substr(Math.floor(Math.random() * 0x10), 1);
}
s[14] = "4";
s[19] = hexDigits.substr((s[19] & 0x3) | 0x8, 1);
s[8] = s[13] = s[18] = s[23] = "-";
var uuid = s.join("");
return uuid;
}
这在javascript中创建了一个RFC有效的UUID / GUID。我想知道的是,如果有一种方法在它到达PHP端时验证字符串。我发现了一个正则表达式可能会将所有格式都粗略地验证为真:
/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/
但只要你指定一个长度和格式相同的字符串就可以使用它,它会通过验证。
有没有办法在javascript函数中添加某种种子,然后在PHP中验证或者PHP是否有办法验证传递的数字是否与正确的格式匹配?
非常感谢任何帮助。
答案 0 :(得分:9)
根据Wikipedia,UUID v4的格式为:
版本4 UUID的格式为xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx 其中x是任何十六进制数字,y是8,9,A或B之一。
f47ac10b-58cc-4372-a567-0e02b2c3d479
。
相应的正则表达式是:
/^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i
答案 1 :(得分:1)
我使用regex
验证和字符串验证来检查给定字符串是否为有效的UUID格式。
if (!is_string($uuid) || (preg_match('/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/', $uuid) !== 1)) {
return false;
}
您可以看到完整的要点here。