我有一个mssql数据库,其中我的主键是GUID.我正在使用Web界面插入一些数据.我需要一个由php生成的GUID.我正在使用com_create_guid()功能.因此,在尝试插入之前,我想确保我的参数有效.我找不到一种方法来检查字符串(com_create_guid()返回字符串)是否是有效的GUID.
Lew*_*wie 39
应该对UUID/GUID模式强加一些规则.
简化模式
表达:
var_dump(
preg_match("/^(\{)?[a-f\d]{8}(-[a-f\d]{4}){4}[a-f\d]{8}(?(1)\})$/i", $guid)
? "ok", "not ok");
Run Code Online (Sandbox Code Playgroud)
翻译:
Pas*_*TIN 31
考虑GUID被定义为这样的:"A98C5A1E-A742-4808-96FA-6F409E799937" (来自维基百科页面所说的)
我想使用像这样的正则表达式会:
$guid = 'A98C5A1E-A742-4808-96FA-6F409E799937';
if (preg_match('/^\{?[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\}?$/', $guid)) {
var_dump('ok');
} else {
var_dump('not ok');
}
Run Code Online (Sandbox Code Playgroud)
它会匹配
每组字符由' -' 分隔
考虑到你正在使用com_create_guid,正则表达式检查选项}和{guid,这意味着它也会显示'ok':
$guid = '{A98C5A1E-A742-4808-96FA-6F409E799937}';
if (preg_match('/^\{?[A-Z0-9]{8}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{12}\}?$/', $guid)) {
var_dump('ok');
} else {
var_dump('not ok');
}
Run Code Online (Sandbox Code Playgroud)