String Schema
Use Validasi.string() to validate string values.
import 'package:validasi/validasi.dart';
import 'package:validasi/rules.dart';
final schema = Validasi.string([
Rules.string.minLength(3),
]);Available Rules
Rules.string.minLength
Ensures the string has at least the given number of characters.
final usernameSchema = Validasi.string([
Rules.string.minLength(3),
]);
print(usernameSchema.validate('al').isValid); // false
print(usernameSchema.validate('alex').isValid); // trueRules.string.maxLength
Ensures the string does not exceed the given number of characters.
final titleSchema = Validasi.string([
Rules.string.maxLength(10),
]);
print(titleSchema.validate('short').isValid); // true
print(titleSchema.validate('this title is too long').isValid); // falseRules.string.oneOf
Ensures the string matches one of the allowed values.
final statusSchema = Validasi.string([
Rules.string.oneOf(['draft', 'published', 'archived']),
]);
print(statusSchema.validate('published').isValid); // true
print(statusSchema.validate('deleted').isValid); // falseRules.string.startsWith
Ensures the string starts with the given prefix.
final schema = Validasi.string([
Rules.string.startsWith('hello'),
]);
print(schema.validate('hello world').isValid); // true
print(schema.validate('world hello').isValid); // falseRules.string.endsWith
Ensures the string ends with the given suffix.
final schema = Validasi.string([
Rules.string.endsWith('.com'),
]);
print(schema.validate('example.com').isValid); // true
print(schema.validate('example.org').isValid); // falseRules.string.contains
Ensures the string contains the given substring.
final schema = Validasi.string([
Rules.string.contains('@'),
]);
print(schema.validate('user@example.com').isValid); // true
print(schema.validate('userexample.com').isValid); // falseRules.string.regex
Ensures the string matches the given regular expression pattern.
final schema = Validasi.string([
Rules.string.regex(r'^[A-Z]{3}-\d{4}$'),
]);
print(schema.validate('ABC-1234').isValid); // true
print(schema.validate('abc-1234').isValid); // falseRules.string.lowercase
Ensures the string contains only lowercase characters.
final schema = Validasi.string([
Rules.string.lowercase(),
]);
print(schema.validate('hello').isValid); // true
print(schema.validate('Hello').isValid); // falseRules.string.uppercase
Ensures the string contains only uppercase characters.
final schema = Validasi.string([
Rules.string.uppercase(),
]);
print(schema.validate('HELLO').isValid); // true
print(schema.validate('Hello').isValid); // falseRules.string.alpha
Ensures the string contains only alphabetic characters (a-z, A-Z).
final schema = Validasi.string([
Rules.string.alpha(),
]);
print(schema.validate('Hello').isValid); // true
print(schema.validate('Hello123').isValid); // falseRules.string.alphanumeric
Ensures the string contains only alphanumeric characters (a-z, A-Z, 0-9).
final schema = Validasi.string([
Rules.string.alphanumeric(),
]);
print(schema.validate('Hello123').isValid); // true
print(schema.validate('Hello-123').isValid); // falseRules.string.numeric
Ensures the string contains only numeric digits (0-9).
final schema = Validasi.string([
Rules.string.numeric(),
]);
print(schema.validate('12345').isValid); // true
print(schema.validate('123.45').isValid); // falseRules.string.uuid
Ensures the string is a valid UUID. By default, accepts UUID v4 and v7.
final schema = Validasi.string([
Rules.string.uuid(),
]);
print(schema.validate('550e8400-e29b-41d4-a716-446655440000').isValid); // true
print(schema.validate('not-a-uuid').isValid); // false
// Restrict to specific versions
final v4Only = Validasi.string([
Rules.string.uuid(versions: [4]),
]);Rules.string.ulid
Ensures the string is a valid ULID (Universally Unique Lexicographically Sortable Identifier).
final schema = Validasi.string([
Rules.string.ulid(),
]);
print(schema.validate('01ARZ3NDEKTSV4RRFFQ69G5FAV').isValid); // true
print(schema.validate('invalid-ulid').isValid); // falseRules.string.ip
Ensures the string is a valid IP address (IPv4 or IPv6).
final schema = Validasi.string([
Rules.string.ip(),
]);
print(schema.validate('192.168.1.1').isValid); // true
print(schema.validate('::1').isValid); // true
print(schema.validate('invalid').isValid); // falseRules.string.ipv4
Ensures the string is a valid IPv4 address.
final schema = Validasi.string([
Rules.string.ipv4(),
]);
print(schema.validate('192.168.1.1').isValid); // true
print(schema.validate('::1').isValid); // falseRules.string.ipv6
Ensures the string is a valid IPv6 address.
final schema = Validasi.string([
Rules.string.ipv6(),
]);
print(schema.validate('::1').isValid); // true
print(schema.validate('192.168.1.1').isValid); // falseRules.string.url
Ensures the string is a valid URL.
final schema = Validasi.string([
Rules.string.url(),
]);
print(schema.validate('https://example.com').isValid); // true
print(schema.validate('not a url').isValid); // false
// Require HTTPS only
final httpsOnly = Validasi.string([
Rules.string.url(httpsOnly: true),
]);
print(httpsOnly.validate('https://example.com').isValid); // true
print(httpsOnly.validate('http://example.com').isValid); // falseRules.string.email
Ensures the string is a valid email address.
final schema = Validasi.string([
Rules.string.email(),
]);
print(schema.validate('user@example.com').isValid); // true
print(schema.validate('invalid-email').isValid); // false
// Allow top-level domains (e.g., user@localhost)
final allowTld = Validasi.string([
Rules.string.email(allowTopLevelDomain: true),
]);
// Restrict to specific domains
final workEmail = Validasi.string([
Rules.string.email(domains: ['company.com', 'company.org']),
]);
print(workEmail.validate('user@company.com').isValid); // true
print(workEmail.validate('user@gmail.com').isValid); // falseCombining String Rules
You can combine multiple rules in one schema.
final displayNameSchema = Validasi.string([
Rules.string.minLength(2),
Rules.string.maxLength(30),
Rules.string.oneOf(['alice', 'bob', 'charlie']),
]);
final result = displayNameSchema.validate('bob');
print(result.isValid); // true