moment.isValid vs regex date string validation

Benchmark created on


Preparation HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/moment.min.js" referrerpolicy="no-referrer"></script>

Setup

const valid = '2025-03-05T19:39:00.567';
const validUtc = '2025-03-05T23:39:00.567Z';
const validLocal = '2021-10-20T14:04:27.68-04:00';
const invalid = 'F64540b2-f058-4a26-aa0e-b624948d4622';
const regex = /^(?:[1-9]\d{3}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1\d|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[1-9]\d(?:0[48]|[2468][048]|[13579][26])|(?:[2468][048]|[13579][26])00)-02-29)T(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:.\d{1,9})?(?:Z|[+-][01]\d:[0-5]\d)$/;

Test runner

Ready to run.

Testing in
TestOps/sec
moment isValid
const isValid = moment(valid, moment.ISO_8601, true)
ready
moment isValid UTC
const isValid = moment(validUtc, moment.ISO_8601, true);
ready
moment isValid Local
const isValid = moment(validLocal, moment.ISO_8601, true);
ready
moment isValid Invalid
const isValid = moment(invalid, moment.ISO_8601, true);
ready
regex
const isValid = regex.test(valid);
ready
regex UTC
const isValid = regex.test(validUtc);
ready
regex Local
const isValid = regex.test(validLocal);
ready
regex invalid
const isValid = regex.test(invalid);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.