API reference@evolu/commonType › regex

function regex<Name>(
  name: ValidateConcreteTypeName<Name>,
  pattern: RegExp,
): BrandFactory<Name, string, RegexError<Name>>;

Defined in: packages/common/src/Type.ts:5632

String Brand constrained by a regular expression.

Example

A non-empty string using the URL-safe alphabet:

import {
  assertEqual,
  assertErr,
  assertOk,
  assertType,
  Data,
  String,
  regex,
  type Brand,
} from "@evolu/common";

const UrlSafeString = regex("UrlSafeString", /^[A-Za-z0-9_-]+$/u)(String);
type UrlSafeString = typeof UrlSafeString.Output;

assertType<string & Brand<"UrlSafeString">, UrlSafeString>();

assertOk(UrlSafeString.fromUnknown("abc-123_DEF"), "abc-123_DEF");
const invalid = UrlSafeString.fromUnknown("not safe");
assertErr(invalid);
assertType(Data, invalid.error);
assertEqual(invalid.error, {
  type: "UrlSafeString",
  value: "not safe",
  source: "^[A-Za-z0-9_-]+$",
  flags: "u",
});