From 5e440a7dc434c43eb828fa62cf9c12b0078b8565 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 20 一月 2025 11:36:18 +0800 Subject: [PATCH] !173 发布 5.3.0-BETA 公测版本 Merge pull request !173 from 疯狂的狮子Li/dev --- src/utils/validate.ts | 54 +++++++++++++++++++++++++++++++++--------------------- 1 files changed, 33 insertions(+), 21 deletions(-) diff --git a/src/utils/validate.ts b/src/utils/validate.ts index c1752fa..788095c 100644 --- a/src/utils/validate.ts +++ b/src/utils/validate.ts @@ -1,10 +1,22 @@ /** + * 璺緞鍖归厤鍣� + * @param {string} pattern + * @param {string} path + * @returns {Boolean} + */ +export function isPathMatch(pattern: string, path: string) { + const regexPattern = pattern.replace(/\//g, '\\/').replace(/\*\*/g, '.*').replace(/\*/g, '[^\\/]*') + const regex = new RegExp(`^${regexPattern}$`) + return regex.test(path) +} + +/** * 鍒ゆ柇url鏄惁鏄痟ttp鎴杊ttps * @returns {Boolean} * @param url */ export const isHttp = (url: string): boolean => { - return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1; + return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1; }; /** @@ -13,7 +25,7 @@ * @returns {Boolean} */ export const isExternal = (path: string) => { - return /^(https?:|mailto:|tel:)/.test(path); + return /^(https?:|mailto:|tel:)/.test(path); }; /** @@ -21,8 +33,8 @@ * @returns {Boolean} */ export const validUsername = (str: string) => { - const valid_map = ['admin', 'editor']; - return valid_map.indexOf(str.trim()) >= 0; + const valid_map = ['admin', 'editor']; + return valid_map.indexOf(str.trim()) >= 0; }; /** @@ -30,9 +42,9 @@ * @returns {Boolean} */ export const validURL = (url: string) => { - const reg = - /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/; - return reg.test(url); + const reg = + /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/; + return reg.test(url); }; /** @@ -40,8 +52,8 @@ * @returns {Boolean} */ export const validLowerCase = (str: string) => { - const reg = /^[a-z]+$/; - return reg.test(str); + const reg = /^[a-z]+$/; + return reg.test(str); }; /** @@ -49,8 +61,8 @@ * @returns {Boolean} */ export const validUpperCase = (str: string) => { - const reg = /^[A-Z]+$/; - return reg.test(str); + const reg = /^[A-Z]+$/; + return reg.test(str); }; /** @@ -58,8 +70,8 @@ * @returns {Boolean} */ export const validAlphabets = (str: string) => { - const reg = /^[A-Za-z]+$/; - return reg.test(str); + const reg = /^[A-Za-z]+$/; + return reg.test(str); }; /** @@ -67,9 +79,9 @@ * @returns {Boolean} */ export const validEmail = (email: string) => { - const reg = - /^(([^<>()\[\]\\.,;:\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 reg.test(email); + const reg = + /^(([^<>()\]\\.,;:\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 reg.test(email); }; /** @@ -77,7 +89,7 @@ * @returns {Boolean} */ export const isString = (str: any) => { - return typeof str === 'string' || str instanceof String; + return typeof str === 'string' || str instanceof String; }; /** @@ -85,8 +97,8 @@ * @returns {Boolean} */ export const isArray = (arg: string | string[]) => { - if (typeof Array.isArray === 'undefined') { - return Object.prototype.toString.call(arg) === '[object Array]'; - } - return Array.isArray(arg); + if (typeof Array.isArray === 'undefined') { + return Object.prototype.toString.call(arg) === '[object Array]'; + } + return Array.isArray(arg); }; -- Gitblit v1.9.3