7

別の回答で次の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 が検証する方法があったかどうかを確認する方法はありますか?

どんな助けでも大歓迎です。

4

2 に答える 2

15

ウィキペディアによると、UUID v4 の形式は次のとおりです。

バージョン 4 UUID の形式は xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx で、x は任意の 16 進数で、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
于 2012-10-09T21:28:22.853 に答える