変数に有効な UUID/GUID 識別子が含まれているかどうかを確認するにはどうすればよいでしょうか?
現時点ではタイプ 1 と 4 の検証のみに関心がありますが、それが回答の制限になることはありません。
ベストアンサー1
現在、UUIDはRFC4122で規定されている。しばしば無視されるエッジケースはNIL UUIDである。ここ次の正規表現はこれを考慮し、NIL UUID に一致するものを返します。非 NIL UUID のみを受け入れる UUID については、以下を参照してください。これらのソリューションは両方ともバージョン 1 から 5 用です (3 番目のブロックの最初の文字を参照)。
したがって、UUID を検証するには...
/^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i
...バージョン 1 から 5 までの正規形式の UUID があり、RFC4122 に従って適切なバリアントであることを確認します。
注意: 中括弧{
と は}
標準ではありません。これらは、一部のシステムと使用法によって生成されたものです。
上記の正規表現を元の質問の要件に合わせて簡単に変更できます。
ヒント: 正規表現のグループ/キャプチャ
NIL UUID の一致を回避するには:
/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i