1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- /**
- https://stackoverflow.com/a/46181/4468021
- */
- export const isEmail = (email: string): boolean => {
- if (!email) {
- return false;
- }
- const re =
- /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
- return re.test(email);
- };
- // Allows splitting emails by comma, semicolon or newline
- export const emailSeparator = /[,;\n]/;
- /**
- * Validate multiple emails, stored as a separated string. Also validates that
- * emails are present
- */
- export const validateMultipleEmails = (emails: string, separator = emailSeparator) => {
- // Empty email is considered valid in this case
- if (!emails) {
- return true;
- }
- return emails
- .split(separator)
- .filter(Boolean)
- .every((email) => isEmail(email));
- };
- /**
- * Validate if image URL ends with allowed extension
- * @param fileName
- * @param allowedExtensions
- */
- export const isValidImageExt = (fileName = '', allowedExtensions = ['png', 'jpg', 'gif']) => {
- if (!fileName) {
- return true;
- }
- const parts = fileName.split('.');
- return allowedExtensions.includes(parts[parts.length - 1]);
- };
|