리퀘오 / 스킬 / 개발

돌려 보고 통과한 정규식

설명과 예시를 넣으면 모든 예시를 실제로 통과한 정규식과 시험 통과표를 돌려줍니다.

제작 리퀘오 버전 4 사용 1,000회 미만

이 스킬이 하는 일

  1. 넣는 것

    규칙 설명 + 맞아야/틀려야 할 예시
    한국 휴대전화 번호. 010·011·016·017·018·019 로 시작하고, 가운데는 3~4자리, 끝은 …
  2. 스킬이 하는 일

    • 정규식 후보를 여러 개 만들어 예시로 시험
    • 느려지는 패턴을 걸러 냄
    • 부분마다 뜻을 풀어 설명
  3. 받는 것

    시험을 통과한 정규식 + JS·Python 코드
    /^01[016789](?:-\d{3,4}-\d{4}|\d{3,4}\d{4})$/
    하이픈 유무를 통일한 한국 휴대전화 번호 형식 검사
    시험 11/11건 통과

이럴 때 쓰세요

실제 결과물

2026년 10월 22일 실행

이 페이지의 예제 입력을 그대로 실행해 받은 결과입니다. 같은 입력이어도 실행할 때마다 표현은 조금씩 달라질 수 있습니다.

완성된 정규식

/^01[016789](?:-\d{3,4}-\d{4}|\d{3,4}\d{4})$/

부분별 뜻

부분뜻
^문자열의 시작
01‘01’ 글자 그대로 (휴대전화 앞 두 자리)
[016789]‘0’, ‘1’, ‘6’, ‘7’, ‘8’, ‘9’ 중 한 글자 (통신사 식별 번호)
(?:묶음 시작 (하이픈 형식 묶음 시작)
-\d{3,4}-\d{4}‘-’ 글자 그대로 → 숫자(0~9) 한 글자, 3~4번 → ‘-’ 글자 그대로 → 숫자(0~9) 한 글자, 정확히 4번 (하이픈 포함 전체 번호)
|또는
\d{3,4}\d{4}숫자(0~9) 한 글자, 3~4번 → 숫자(0~9) 한 글자, 정확히 4번 (하이픈 없는 전체 번호)
)묶음 끝
$문자열의 끝

예시 시험 결과

입력기대결과
010-1234-5678맞아야 함통과
01012345678맞아야 함통과
011-123-4567맞아야 함통과
019-9876-5432맞아야 함통과
010-12345-678틀려야 함통과
02-123-4567틀려야 함통과
010-1234-567틀려야 함통과
0101234567890틀려야 함통과
010 1234 5678틀려야 함통과
012-1234-5678틀려야 함통과
010-12345678틀려야 함통과
결과 더 보기 JavaScript 코드 · Python 코드

JavaScript 코드

const pattern = /^01[016789](?:-\d{3,4}-\d{4}|\d{3,4}\d{4})$/;

function isValid(value) {
  return pattern.test(String(value));
}

// isValid(입력값) → true | false

Python 코드

import re

pattern = re.compile(r'^01[016789](?:-\d{3,4}-\d{4}|\d{3,4}\d{4})$', re.ASCII)

def is_valid(value: str) -> bool:
    return pattern.fullmatch(value) is not None
결과 JSON 원본 보기 API·MCP 가 돌려주는 모양 그대로
{
  "pattern": "^01[016789](?:-\\d{3,4}-\\d{4}|\\d{3,4}\\d{4})$",
  "flags": "",
  "regex": "/^01[016789](?:-\\d{3,4}-\\d{4}|\\d{3,4}\\d{4})$/",
  "mode": "whole",
  "summary": "하이픈 유무를 통일한 한국 휴대전화 번호 형식 검사",
  "parts": [
    {
      "part": "^",
      "meaning": "문자열의 시작",
      "role": ""
    },
    {
      "part": "01",
      "meaning": "‘01’ 글자 그대로",
      "role": "휴대전화 앞 두 자리"
    },
    {
      "part": "[016789]",
      "meaning": "‘0’, ‘1’, ‘6’, ‘7’, ‘8’, ‘9’ 중 한 글자",
      "role": "통신사 식별 번호"
    },
    {
      "part": "(?:",
      "meaning": "묶음 시작",
      "role": "하이픈 형식 묶음 시작"
    },
    {
      "part": "-\\d{3,4}-\\d{4}",
      "meaning": "‘-’ 글자 그대로 → 숫자(0~9) 한 글자, 3~4번 → ‘-’ 글자 그대로 → 숫자(0~9) 한 글자, 정확히 4번",
      "role": "하이픈 포함 전체 번호"
    },
    {
      "part": "|",
      "meaning": "또는",
      "role": ""
    },
    {
      "part": "\\d{3,4}\\d{4}",
      "meaning": "숫자(0~9) 한 글자, 3~4번 → 숫자(0~9) 한 글자, 정확히 4번",
      "role": "하이픈 없는 전체 번호"
    },
    {
      "part": ")",
      "meaning": "묶음 끝",
      "role": ""
    },
    {
      "part": "$",
      "meaning": "문자열의 끝",
      "role": ""
    }
  ],
  "tests": [
    {
      "text": "010-1234-5678",
      "should_match": true,
      "matched": true,
      "pass": true
    },
    {
      "text": "01012345678",
      "should_match": true,
      "matched": true,
      "pass": true
    },
    {
      "text": "011-123-4567",
      "should_match": true,
      "matched": true,
      "pass": true
    },
    {
      "text": "019-9876-5432",
      "should_match": true,
      "matched": true,
      "pass": true
    },
    {
      "text": "010-12345-678",
      "should_match": false,
      "matched": false,
      "pass": true
    },
    {
      "text": "02-123-4567",
      "should_match": false,
      "matched": false,
      "pass": true
    },
    {
      "text": "010-1234-567",
      "should_match": false,
      "matched": false,
      "pass": true
    },
    {
      "text": "0101234567890",
      "should_match": false,
      "matched": false,
      "pass": true
    },
    {
      "text": "010 1234 5678",
      "should_match": false,
      "matched": false,
      "pass": true
    },
    {
      "text": "012-1234-5678",
      "should_match": false,
      "matched": false,
      "pass": true
    },
    {
      "text": "010-12345678",
      "should_match": false,
      "matched": false,
      "pass": true
    }
  ],
  "edge_cases": [
    {
      "text": "010-123-4567",
      "matched": true,
      "expected": true,
      "agrees": true,
      "why": "가운데 3자리 하이픈"
    },
    {
      "text": "01612345678",
      "matched": true,
      "expected": true,
      "agrees": true,
      "why": "가운데 4자리 붙임"
    },
    {
      "text": "019-1234-5678",
      "matched": true,
      "expected": true,
      "agrees": true,
      "why": "019 시작 정상 형식"
    },
    {
      "text": "018-123-4567",
      "matched": true,
      "expected": true,
      "agrees": true,
      "why": "018 시작 3자리"
    },
    {
      "text": "010-1234-56789",
      "matched": false,
      "expected": false,
      "agrees": true,
      "why": "끝 5자리 초과"
    },
    {
      "text": "010-1234 5678",
      "matched": false,
      "expected": false,
      "agrees": true,
      "why": "혼합 구분자"
    },
    {
      "text": "010-12345-6789",
      "matched": false,
      "expected": false,
      "agrees": true,
      "why": "가운데 5자리 초과"
    },
    {
      "text": "0100-123-4567",
      "matched": false,
      "expected": false,
      "agrees": true,
      "why": "앞자리 4자리"
    }
  ],
  "safety": {
    "checked_inputs": 23,
    "slowest_ms": 0.05,
    "limit_ms": 400,
    "passed": true
  },
  "javascript": "const pattern = /^01[016789](?:-\\d{3,4}-\\d{4}|\\d{3,4}\\d{4})$/;\n\nfunction isValid(value) {\n  return pattern.test(String(value));\n}\n\n// isValid(입력값) → true | false",
  "python": "import re\n\npattern = re.compile(r'^01[016789](?:-\\d{3,4}-\\d{4}|\\d{3,4}\\d{4})$', re.ASCII)\n\ndef is_valid(value: str) -> bool:\n    return pattern.fullmatch(value) is not None",
  "python_notes": [
    "re.ASCII 를 넣어 \\d·\\w·\\b 가 JavaScript 와 같게(ASCII 기준) 동작하게 했습니다.",
    "Python 코드는 같은 패턴을 문법만 옮긴 것입니다. 시험 통과표는 JavaScript 엔진에서 실행한 결과입니다."
  ],
  "candidates": {
    "generated": 5,
    "passed": 4,
    "rejected_examples": 1,
    "rejected_slow": 0,
    "rejected_invalid": 0,
    "repaired": false
  }
}

실행하기

10~50P/ 실행

예상 3~11초 · 글 생성 보통 4회, 최대 4회 · 후보·근거 판단 보통 3회, 최대 3회

출고 전 평가 사례의 실측 범위; 입력 크기에 따라 달라지며 보장 시간 아님

기본 처리비 + 응답 사용량과 저장 단가로 계산한 도구 사용료. 최대액을 예약하고 차액을 반환합니다. 사용량 미확인·실패 시 청구하지 않습니다.

로그인하고 실행

기본요금(판매자 금액·기본 수수료) + 실제 AI 사용료로 정산합니다. AI 사용료는 모델별 단가와 실제 사용량으로 계산하며, 2026년 11월 6일부터 시간대별 요금이 있는 모델은 시간대와 관계없이 같은 단가를 적용합니다. 입력과 실제 사용량에 따라 달라지며 AI 사용료에 수수료를 다시 붙이지 않습니다. 결과가 정상적으로 나왔을 때만 차감됩니다. 실패·시간초과·취소는 차감되지 않습니다. TTS에 연결한 정규화의 취소·환불은 TTS 정산 규칙을 적용합니다.

이 Skill 의 결과는 생성형 AI 가 만듭니다.

예제 입력

찾고 싶은 것
한국 휴대전화 번호. 010·011·016·017·018·019 로 시작하고, 가운데는 3~4자리, 끝은 4자리. 하이픈은 두 곳 모두 넣거나 모두 빼야 한다.
맞아야 하는 글
[
  "010-1234-5678",
  "01012345678",
  "011-123-4567",
  "019-9876-5432"
]
맞으면 안 되는 글
[
  "010-12345-678",
  "02-123-4567",
  "010-1234-567",
  "0101234567890",
  "010 1234 5678",
  "012-1234-5678",
  "010-12345678"
]
쓰임새
whole
입력 JSON 보기

입력

{
  "description": "한국 휴대전화 번호. 010·011·016·017·018·019 로 시작하고, 가운데는 3~4자리, 끝은 4자리. 하이픈은 두 곳 모두 넣거나 모두 빼야 한다.",
  "should_match": [
    "010-1234-5678",
    "01012345678",
    "011-123-4567",
    "019-9876-5432"
  ],
  "should_not_match": [
    "010-12345-678",
    "02-123-4567",
    "010-1234-567",
    "0101234567890",
    "010 1234 5678",
    "012-1234-5678",
    "010-12345678"
  ],
  "mode": "whole"
}

설명

찾고 싶은 것을 설명하고 맞아야 하는 글과 맞으면 안 되는 글을 넣으면, 후보를 여러 개 만들어 예시 전부로 실제 실행해 보고 통과한 것 중 가장 단순하고 범위가 알맞은 정규식을 고릅니다. 긴 입력에서 멈추는 패턴은 시간 제한 시험으로 걸러 냅니다. 부분별 풀이, 예시 시험 통과표, 예시에 없던 경계 사례 결과, JavaScript·Python 사용 예를 함께 받습니다. 검증 결과: 9개 사례 평균 89.7/100점, 일반 모델 1회 텍스트 응답 57.9점. 실측 3~6초, 외부 AI 보통 7회. 동일 도구 조건의 실험이 아닌 납품 결과 비교이며, 반복 개선에 사용한 사례의 결과로 일반적인 성능을 보장하지 않습니다.

입력과 결과

입력

이름형식과 설명
찾고 싶은 것필수description글 · 최대 600자
무엇을 맞히고 무엇을 걸러야 하는지 적습니다. 예: 한국 휴대전화 번호, 하이픈은 있어도 없어도 됨
맞아야 하는 글필수should_match글 목록 · 1~30개
정규식이 반드시 맞혀야 하는 예시
맞으면 안 되는 글should_not_match글 목록 · 최대 30개
비슷하지만 걸러야 하는 예시(많을수록 정확해집니다)
쓰임새mode글 (whole · search)
whole: 입력값 전체가 형식에 맞는지 검사 / search: 긴 글 안에서 찾아내기

입력은 글자 수 합계 100,000자까지, 처리 시간은 최대 40초입니다.

결과

이름형식과 설명
패턴pattern글
플래그flags글
정규식(/패턴/플래그)regex글
쓰임새mode글
한 줄 설명summary글
부분별 풀이parts목록 (부분 · 뜻 · 여기서 하는 일)
예시 시험 결과tests목록 (글 · 맞아야 하는가 · 실제로 맞았는가 · 통과 · 출처(비어 있으면 입력 예시))
경계 사례(예시에 없던 글)edge_cases목록 (글 · 실제로 맞았는가 · 설명대로라면 맞아야 하는가(추정) · 추정과 같음 · 이 글을 넣은 까닭)
느려지는 입력 검사safety묶음
JavaScript 사용 예javascript글
Python 사용 예python글
Python 에서 달라지는 점python_notes글 목록
후보 처리 내역candidates묶음
결과 파일artifacts목록 (파일 ID · 파일 이름 · 설명 · 파일 형식 · 파일 주소 · 파일 해시 · 크기(바이트) · 너비 · 높이 · 길이(초)) · 최대 20개

API·MCP 로 쓰기

인증키와 포인트는 다른 리퀘오 API 와 같습니다. 개발가이드

REST

curl -X POST https://reqeo.com/rest/skills/sk_9e0917d8dae5c525/runs \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Idempotency-Key: my-request-001" \
  -H "Content-Type: application/json" \
  -d '{"input":{"description":"한국 휴대전화 번호. 010·011·016·017·018·019 로 시작하고, 가운데는 3~4자리, 끝은 4자리. 하이픈은 두 곳 모두 넣거나 모두 빼야 한다.","should_match":["010-1234-5678","01012345678","011-123-4567","019-9876-5432"],"should_not_match":["010-12345-678","02-123-4567","010-1234-567","0101234567890","010 1234 5678","012-1234-5678","010-12345678"],"mode":"whole"}}'

Idempotency-Key 는 요청마다 새로 정하는 값입니다. 같은 값으로 다시 보내면 한 번만 실행되고 같은 결과를 돌려받습니다.

MCP

엔드포인트  https://reqeo.com/mcp/skills
도구        run_skill
skill_id    sk_9e0917d8dae5c525

리뷰 0개

로그인하고 이 스킬을 실행하면 리뷰를 남길 수 있습니다. 로그인

아직 리뷰가 없습니다. 실행해 본 뒤 첫 리뷰를 남겨 주세요.