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