/** * 有效IPv4格式地址 */ export const regExpIPv4 = /^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/; /** * 有效IPv6格式地址 */ export const regExpIPv6 = /^(?:(?:[0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,7}:|(?:[0-9A-Fa-f]{1,4}:){1,6}:[0-9A-Fa-f]{1,4}|(?:[0-9A-Fa-f]{1,4}:){1,5}(?::[0-9A-Fa-f]{1,4}){1,2}|(?:[0-9A-Fa-f]{1,4}:){1,4}(?::[0-9A-Fa-f]{1,4}){1,3}|(?:[0-9A-Fa-f]{1,4}:){1,3}(?::[0-9A-Fa-f]{1,4}){1,4}|(?:[0-9A-Fa-f]{1,4}:){1,2}(?::[0-9A-Fa-f]{1,4}){1,5}|[0-9A-Fa-f]{1,4}:(?:(?::[0-9A-Fa-f]{1,4}){1,6})|:(?:(?::[0-9A-Fa-f]{1,4}){1,7}|:)|fe80:(?::[0-9A-Fa-f]{0,4}){0,4}%\w+|::(?:ffff(?::0{1,4}){0,1}:){0,1}(?:(?:2[0-4]|1\d|[1-9])?\d|25[0-5])\.(?:(?:2[0-4]|1\d|[1-9])?\d|25[0-5])\.(?:(?:2[0-4]|1\d|[1-9])?\d|25[0-5])\.(?:(?:2[0-4]|1\d|[1-9])?\d|25[0-5])|(?:[0-9A-Fa-f]{1,4}:){1,4}:192\.88\.99\.(\d{1,3})|(?:[0-9A-Fa-f]{1,4}:){1,4}:192\.0\.2\.(\d{1,3})|(?:[0-9A-Fa-f]{1,4}:){1,4}:(?:[0-9A-Fa-f]{1,4}:){0,1}192\.0\.0\.(\d{1,3})|ff00:(?::[0-9A-Fa-f]{0,4}){0,4}|(?:[0-9A-Fa-f]{1,4}:){1,4}:255\.255\.255\.255)$/i; /** * 有效端口格式 */ export const regExpPort = /^([0-9]|[1-9][0-9]{1,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/; /** * 有效账号格式 * * 账号只能包含大写字母、小写字母和数字的字符串,长度至少为6位 */ export const regExpUserName = /^[A-Za-z0-9]{6,}$/; /** * 有效密码格式 * * 密码至少包含大小写字母、数字、特殊符号,且不少于6位 * /^(?![A-Za-z0-9]+$)(?![a-z0-9\W]+$)(?![A-Za-z\W]+$)(?![A-Z0-9\W]+$)[a-zA-Z0-9\W]{6,}$/ */ export const regExpPasswd = /^.{6,}$/; /** * 有效手机号格式 * /^1[3|4|5|6|7|8|9][0-9]\d{8}$/ */ export const regExpMobile = /^.{3,}$/; /** * 有效邮箱格式 */ export const regExpEmail = /^(([^<>()\\.,;:\s@"]+(\.[^<>()\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+\.)+[a-zA-Z\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]{2,}))$/; /** * 有效用户昵称格式 * * 用户昵称只能包含字母、数字、中文和下划线,且不少于2位 * /^[\w\u4e00-\u9fa5-]{2,}$/ */ export const regExpNick = /^.{2,}$/; /** * 是否为http(s)://开头 */ export const regExpHttp = /^http(s)?:\/\/+/; /** * 判断是否为http(s)://开头 * @param link 网络链接 * @returns true | false */ export function validHttp(link: string): boolean { if (!link) return false; return regExpHttp.test(link); } /** * 判断是否有效URL地址 * @param str 网络链接 * @returns true | false */ export function validURL(str: string) { if ( str === '' || str.length >= 2083 || str.length <= 3 || str.startsWith('.') ) { return false; } let strTemp = str; if (str.includes(':') && !str.includes('://')) { // support no indicated urlscheme but with colon for port number // http:// is appended so url.Parse will succeed, strTemp used so it does not impact rxURL.MatchString strTemp = 'http://' + str; } let u = { host: '', pathname: '' }; try { new URL(strTemp); } catch (error) { return false; } if (u.host.startsWith('.')) { return false; } if (u.host === '' && u.pathname !== '' && !u.pathname.includes('.')) { return false; } // 正则表达式模式(rxURL)未提供,无法进行具体判断 return true; } /** * 判断是否为有效手机号格式 * @param mobile 手机号字符串 * @returns true | false */ export function validMobile(mobile: string): boolean { if (!mobile) return false; return regExpMobile.test(mobile); } /** * 判断是否为有效邮箱格式 * @param email 邮箱字符串 * @returns true | false */ export function validEmail(email: string): boolean { if (!email) return false; return regExpEmail.test(email); }