Kiểm tra Regex API

Chạy biểu thức chính quy JavaScript trên văn bản: mọi kết quả khớp kèm vị trí, nhóm đánh số và nhóm có tên, thay thế và tách chuỗi, có chặn mẫu chạy quá lâu.

GETPOSThttps://apibox.io.vn/v1/regex
Tiện ích lập trình▶ Dùng thử online

API regex chạy một biểu thức chính quy (cú pháp JavaScript / ECMAScript như trong trình duyệt và Node.js) trên văn bản tối đa 100.000 ký tự. action=match (mặc định) trả về mọi kết quả khớp kèm vị trí bắt đầu, kết thúc và giá trị, vị trí của từng nhóm đánh số và nhóm có tên; test trả về true / false, replace thay thế với $1, $<tên> và $&, còn split tách chuỗi.

Các cờ thông dụng g i m s u v y (và d, dùng nội bộ để lấy vị trí nhóm). Không có g, match chỉ trả về kết quả đầu tiên. Mẫu không hợp lệ trả về lỗi 400 kèm thông báo của engine, nên API cũng dùng được để kiểm tra mẫu do người dùng nhập.

Các mẫu có lượng từ lồng nhau như (a+)+ hay (\w*\s?)*, vốn có thể chạy mất thời gian luỹ thừa với một số đầu vào, bị từ chối với mã unsafe_pattern. Kết quả giới hạn 1.000 lần khớp (limit, mặc định 100); count vẫn cho biết tổng số.

Tham số

TênVị tríKiểuBắt buộcMặc định
patternbody|querystringcóBiểu thức chính quy, không kèm dấu /.
textbody|querystringkhôngVăn bản cần tìm (tối đa 100.000 ký tự).
flagsbody|querystringkhôngCác cờ, ví dụ gi.
actionbody|querystringkhôngmatchmatch, test, replace hoặc split.
replacementbody|querystringkhôngChuỗi thay thế cho replace ($1, $<tên>, $&).
limitbody|querynumberkhông100Số kết quả / phần tối đa trả về (1–1000).

Ví dụ

curl -X POST "https://apibox.io.vn/v1/regex" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"pattern":"(?<user>[\\w.]+)@([\\w.]+)","flags":"g","text":"a@x.com, b.c@y.vn"}'

Kết quả trả về

{
  "pattern": "(?<user>[\\w.]+)@([\\w.]+)",
  "flags": "g",
  "action": "match",
  "group_count": 2,
  "group_names": [
    "user"
  ],
  "global": true,
  "count": 2,
  "truncated": false,
  "matches": [
    {
      "match": "a@x.com",
      "index": 0,
      "end": 7,
      "groups": [
        {
          "index": 1,
          "value": "a",
          "start": 0,
          "end": 1
        },
        {
          "index": 2,
          "value": "x.com",
          "start": 2,
          "end": 7
        }
      ],
      "named": {
        "user": "a"
      }
    },
    {
      "match": "b.c@y.vn",
      "index": 9,
      "end": 17,
      "groups": [
        {
          "index": 1,
          "value": "b.c",
          "start": 9,
          "end": 12
        },
        {
          "index": 2,
          "value": "y.vn",
          "start": 13,
          "end": 17
        }
      ],
      "named": {
        "user": "b.c"
      }
    }
  ]
}

Ứng dụng

  • Trang thử regex, công cụ dạy học
  • Kiểm tra mẫu regex người dùng nhập trước khi lưu
  • Trích xuất dữ liệu từ log, văn bản trong các luồng tự động hoá
  • Tìm và thay thế hàng loạt từ script bất kỳ ngôn ngữ nào

Hỏi đáp

Dùng cú pháp regex nào?

ECMAScript (V8), giống JavaScript trong trình duyệt và Node.js. Hỗ trợ lookbehind, nhóm có tên, Unicode property (\p{L} với cờ u) và cờ v.

Vì sao mẫu của tôi bị coi là không an toàn?

Mẫu có một nhóm được lặp mà bên trong lại có lượng từ, nguyên nhân kinh điển của backtracking bùng nổ. Hãy viết lại (ví dụ (a+)+ → a+).

Tham chiếu nhóm trong chuỗi thay thế thế nào?

$1, $2… cho nhóm đánh số, $<tên> cho nhóm có tên, $& cho cả chuỗi khớp và $$ cho ký tự $.

API liên quan

Bắt đầu với 1.000 request miễn phí mỗi tháng. Nhận API key miễn phí →