UUID UUID Generator

무료 · 회원가입 없음 · 설치 없음

UUID 정규식 테스터

UUID를 찾아내는 정규식을 직접 확인해 보세요. 엄격한 패턴과 느슨한 패턴의 차이를 줄마다 비교해 줍니다.

  • 엄격 + 느슨 패턴
  • 줄별 결과
  • 최대 200줄

UUID 정규식 테스터

Regex
최대 200줄입니다. 중괄호, 따옴표, 대문자, 하이픈이 없는 형식도 그대로 붙여넣으면 됩니다.

결과 0

결과가 여기에 표시됩니다.

모든 값은 사용자의 기기에서 Web Crypto API로 생성되며, 브라우저 밖으로 전송되지 않습니다. 단축키: Ctrl + Enter — 다시 생성

정규식 개요

UUID를 검사하는 정규식은 보통 두 가지로 나뉩니다. 길이와 문자 종류만 보는 느슨한 패턴과, 13번째 자리의 버전과 17번째 자리의 변형까지 확인하는 엄격한 패턴입니다.

느슨한 패턴은 로그에서 UUID처럼 생긴 문자열을 찾아낼 때 쓰고, 엄격한 패턴은 실제로 쓸 수 있는 값인지 판단할 때 씁니다. 이 도구는 두 결과를 나란히 보여줍니다.

사용 방법

  1. 테스트할 값을 한 줄에 하나씩 붙여넣습니다. 최대 200줄입니다.
  2. 정규식 테스트를 누릅니다.
  3. 줄마다 어느 패턴에 맞는지 표시됩니다.
  4. 엄격한 패턴에만 통과한 값이 실제로 유효한 UUID입니다.

사용 사례

  • 로그 파서에 넣을 정규식을 미리 검증할 때.
  • 값을 받아들이기 전에 클라이언트 쪽에서 걸러낼 때.
  • 빅쿼리나 데이터 파이프라인에서 UUID 컬럼을 추려낼 때.

구조

엄격한 패턴은 13번째 자리에서 1~8을, 17번째 자리에서 8, 9, a, b만 허용합니다. 이 두 자리가 UUID의 버전과 변형을 나타냅니다.

정규식의 역할

어떤 옵션을 언제 써야 할까
옵션사용 시점
정규식직접 패턴을 확인해 볼 때
검증패턴 해석 없이 값만 확인할 때
일괄 생성검증할 값을 대량으로 만들 때

UUID 버전 한눈에 보기

버전정렬 가능값의 출처적합한 용도
v1불가능타임스탬프 + MAC 주소v1을 계속 쓰는 기존 시스템
v3불가능이름의 MD5 해시MD5를 꼭 써야 하는 결정적 식별자
v4불가능122비트 난수대부분의 일반적인 고유 식별자
v5불가능이름의 SHA-1 해시같은 이름에서 항상 같은 식별자가 필요할 때
v6가능재배열한 타임스탬프난수성과 정렬을 함께 원할 때
v7가능밀리초 단위 Unix 시간데이터베이스 기본 키와 이벤트 식별자
v8불가능사용자 정의 비트 레이아웃사내 형식과 실험적 용도

일곱 버전 모두 128비트이고, 모두 같은 8-4-4-4-12 표기법으로 표현합니다. 차이는 각 비트가 무엇을 담는지뿐입니다.

코드 예제

javascript

// 느슨한 패턴: 형식만 확인합니다
const loose = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;

// 엄격한 패턴: 버전과 변형까지 확인합니다
const strict = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;

python

import re
STRICT = re.compile(r'^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}'
                    r'-[89ab][0-9a-f]{3}-[0-9a-f]{12}$', re.I)
bool(STRICT.match(value))

java

var strict = Pattern.compile(
    "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-"
    + "[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
    Pattern.CASE_INSENSITIVE);

csharp

var strict = new Regex(
    "^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-"
    + "[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
    RegexOptions.IgnoreCase);

sql

-- PostgreSQL 13+
WHERE value ~* '^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$';

자주 묻는 질문

느슨한 패턴과 엄격한 패턴의 차이는 무엇인가요?

느슨한 패턴은 길이와 문자 종류만 보고, 엄격한 패턴은 버전과 변형 자리까지 확인합니다. 형식은 맞지만 버전 자리가 규격 밖인 값을 걸러내려면 엄격한 패턴이 필요합니다.

버전 자리는 왜 1~8인가요?

RFC 9562가 버전 1부터 8까지를 정의했기 때문입니다. 0은 사용하지 않고 9 이상은 예약되어 있습니다.

변형 자리는 왜 8, 9, a, b인가요?

RFC 4122 / 9562 호환 변형을 나타내는 값이 앞 두 비트 10이기 때문입니다. 그래서 16진수로 8부터 b까지가 됩니다.