typia
Version:
Superfast runtime validators with only one line
26 lines (23 loc) • 827 B
text/typescript
import { _randomString } from "./_randomString";
import {
_ILengthProps,
_randomLengthPick,
_randomLengthWindow,
} from "./_randomStringLength";
export const _randomFormatRegex = (props?: _ILengthProps): string => {
if (props?.minLength === undefined && props?.maxLength === undefined)
return FIXED;
// Every character `_randomString` emits is a literal in regular expression
// syntax, so a source of any length — including the empty source `new
// RegExp("")` accepts — compiles.
const length: number = _randomLengthPick(
_randomLengthWindow(props, { minimum: 0, spread: 16 }),
);
return _randomString({
type: "string",
minLength: length,
maxLength: length,
});
};
const FIXED =
"/^(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)$/";