@travetto/schema
Version:
Data type registry for runtime validation, reflection and binding.
22 lines (21 loc) • 893 B
text/typescript
import { TypedObject } from '@travetto/runtime';
/**
* List of common regular expressions for fields
*/
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
export const [CommonRegex, CommonRegexToName] = (() => {
const regexToName = new Map<RegExp, string>();
const regexes = {
email: /^[a-zA-Z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/,
telephone: /^(\+?\d{1,3}(\s*-?\s*|\s+))?((\(\d{3}\))|\d{3})(\s*|-|[.])(\d{3})(\s*|-|[.])(\d{4})(\s+(x|ext[.]?)\s*\d+)?$/,
url: /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/,
simpleName: /^([a-zA-Z\u0080-\u024F]{0,100}(?:. |-| |')){0,10}[a-zA-Z\u0080-\u024F]+$/,
postalCode: /^\d{5}(?:[-\s]\d{4})?$/
};
// Rebind regexes
for (const key of TypedObject.keys(regexes)) {
const name = `[[:${key}:]]`;
regexToName.set(regexes[key], name);
}
return [regexes, regexToName];
})();