commons_validator 0.1.0 copy "commons_validator: ^0.1.0" to clipboard
commons_validator: ^0.1.0 copied to clipboard

A Dart port of the Apache Commons Validator routines - email, URL, domain, IP, IBAN, ISBN, ISIN, ISSN, credit card, check digit, number and date validators.

example/commons_validator_example.dart

// ignore_for_file: avoid_print
import 'package:commons_validator/commons_validator.dart';

void main() {
  // --- Network and domain ---
  print(EmailValidator.getInstance().isValid('someone@example.com')); // true
  print(
      UrlValidator.getInstance().isValid('https://example.com/a?b=c')); // true
  print(DomainValidator.getInstance().isValid('example.co.uk')); // true
  print(InetAddressValidator.getInstance().isValid('2001:db8::1')); // true

  // Unicode domains are converted to punycode first, so these agree.
  final domains = DomainValidator.getInstance();
  print(domains.isValid('exämple.com')); // true
  print(domains.isValid('xn--exmple-cua.com')); // true

  // --- Financial codes ---
  print(IBANValidator.getInstance().isValid('GB29NWBK60161331926819')); // true
  print(IBANValidator.getInstance().validate('GB29NWBK60161331926810').name);
  // invalidChecksum

  print(ISBNValidator.getInstance().validate('1-930110-99-5'));
  // 9781930110991 - a valid ISBN-10, converted to ISBN-13

  print(CreditCardValidator().isValid('4417123456789113')); // true
  print(
    CreditCardValidator(CreditCardValidator.amex).isValid('4417123456789113'),
  ); // false - a Visa number, and only Amex is enabled

  // --- Check digits on their own ---
  print(LuhnCheckDigit.luhnCheckDigit.calculate('441712345678911')); // 3
  print(
      IBANCheckDigit.ibanCheckDigit.isValid('GB29NWBK60161331926819')); // true

  // --- Numbers ---
  // Always pass the locale: unlike Java there is no mutable global default.
  final amounts = BigDecimalValidator.getInstance();
  print(amounts.parse('1,234.56', locale: 'en_US')); // 1234.56
  print(amounts.parse('1.234,56', locale: 'de_DE')); // 1234.56

  print(IntegerValidator.getInstance().parse('1,234', locale: 'en_US')); // 1234
  print(CurrencyValidator.getInstance().parse(r'$1,234.56', locale: 'en_US'));
  // 1234.56

  // A lenient validator keeps the parsed prefix instead of failing.
  print(
      const IntegerValidator(strict: false).parse('1234abc', locale: 'en_US'));
  // 1234

  // --- Dates ---
  final dates = DateValidator.getInstance();
  print(dates.parse('2026-06-15', pattern: 'yyyy-MM-dd')); // 2026-06-15 00:00
  print(dates.parse('2026-02-30', pattern: 'yyyy-MM-dd')); // null

  final june = dates.parse('2026-06-15', pattern: 'yyyy-MM-dd')!;
  final july = dates.parse('2026-07-15', pattern: 'yyyy-MM-dd')!;
  print(dates.compareMonths(june, july)); // -1

  final time =
      TimeValidator.getInstance().parse('12:30:45', pattern: 'HH:mm:ss')!;
  print('${time.hour}:${time.minute}:${time.second}'); // 12:30:45
}
7
likes
160
points
--
downloads

Documentation

API reference

Publisher

verified publisherabaxoft.com

A Dart port of the Apache Commons Validator routines - email, URL, domain, IP, IBAN, ISBN, ISIN, ISSN, credit card, check digit, number and date validators.

Repository (GitHub)
View/report issues

Topics

#validation #validator #email #iban #check-digit

License

Apache-2.0 (license)

Dependencies

decimal, intl, unorm_dart

More

Packages that depend on commons_validator