当前位置: 首页 > web >正文

鸿蒙NEXT开发正则工具类(ArkTs)

import { FormatUtil } from './FormatUtil';/*** 正则工具类* @author CSDN-鸿蒙布道师* @since 2025/04/27*/
export class RegexUtil {/*** 英文字母、数字和下划线*/static readonly REG_GENERAL = "^\\w+$";/*** 数字*/static readonly REG_NUMBERS = "^\\d+$";/*** 字母*/static readonly REG_WORD = "^[a-zA-Z]+$";/*** 单个中文汉字* 参考维基百科汉字 Unicode 范围 (https://zh.wikipedia.org/wiki/%E6%B1%89%E5%AD%97)*/static readonly REG_CHINESE ="^[\u2E80-\u2EFF\u2F00-\u2FDF\u31C0-\u31EF\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\uD840\uDC00-\uD869\uDEDF\uD869\uDF00-\uD86D\uDF3F\uD86D\uDF40-\uD86E\uDC1F\uD86E\uDC20-\uD873\uDEAF\uD87E\uDC00-\uD87E\uDE1F]$";/*** 中文汉字(一个或多个)*/static readonly REG_CHINESES = `${RegexUtil.REG_CHINESE}+`;/*** 分组匹配变量*/static readonly REG_GROUP_VAR = "^\\$(\\d+)$";/*** IPv4 地址*/static readonly REG_IPV4 ="^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)$";/*** IPv6 地址*/static readonly REG_IPV6 ="^(([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}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9]))$";/*** 货币金额*/static readonly REG_MONEY = "^(\\d+(?:\\.\\d+)?)$";/*** 邮件地址,符合 RFC 5322 规范* 来源:http://emailregex.com/*/static readonly REG_EMAIL ="^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?: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]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)])$";/*** 移动电话号码(中国大陆)*/static readonly REG_MOBILE = "^(?:0|86|\\+86)?1[3-9]\\d{9}$";/*** 中国香港移动电话号码*/static readonly REG_MOBILE_HK = "^(?:0|852|\\+852)?\\d{8}$";/*** 中国台湾移动电话号码*/static readonly REG_MOBILE_TW = "^(?:0|886|\\+886)?(?:|-)09\\d{8}$";/*** 中国澳门移动电话号码*/static readonly REG_MOBILE_MO = "^(?:0|853|\\+853)?(?:|-)6\\d{7}$";/*** 座机号码*/static readonly REG_TEL = "^(010|02\\d|0[3-9]\\d{2})-?(\\d{6,8})$";/*** 座机号码 + 400/800 电话*/static readonly REG_TEL_400_800 ="^0\\d{2,3}[\\- ]?[1-9]\\d{6,7}|[48]00[\\- ]?[1-9]\\d{6}$";/*** 18 位身份证号码*/static readonly REG_CITIZEN_ID ="^[1-9]\\d{5}[1-2]\\d{3}((0\\d)|(1[0-2]))(([012]\\d)|3[0-1])\\d{3}(\\d|X|x)$";/*** 邮编(兼容港澳台)*/static readonly REG_ZIP_CODE ="^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[0-7]|6[0-7]|7[0-5]|8[0-9]|9[0-8])\\d{4}|99907[78]$";/*** 生日*/static readonly REG_BIRTHDAY ="^(\\d{2,4})([/\\-.年]?)(\\d{1,2})([/\\-.月]?)(\\d{1,2})日?$";/*** URI* 定义见:https://www.ietf.org/rfc/rfc3986.html#appendix-B*/static readonly REG_URI ="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";/*** URL*/static readonly REG_URL ="^[a-zA-Z]+://[\\w-+&@#/%?=~_|!:,.;]*[\\w-+&@#/%=~_|]$";/*** HTTP URL(支持 FTP、File 等协议)*/static readonly REG_URL_HTTP ="^(https?|ftp|file)://[\\w-+&@#/%?=~_|!:,.;]*[\\w-+&@#/%=~_|]$";/*** 中文字、英文字母、数字和下划线*/static readonly REG_GENERAL_WITH_CHINESE = "^[\u4E00-\u9FFF\\w]+$";/*** UUID*/static readonly REG_UUID ="^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$";/*** 不带横线的 UUID*/static readonly REG_UUID_SIMPLE = "^[0-9a-fA-F]{32}$";/*** MAC 地址*/static readonly REG_MAC_ADDRESS ="^((?:[a-fA-F0-9]{1,2}[:-]){5}[a-fA-F0-9]{1,2})|0x(\\d{12}).+ETHER$";/*** 16 进制字符串*/static readonly REG_HEX = "^[a-fA-F0-9]+$";/*** 时间格式*/static readonly REG_TIME = "^\\d{1,2}:\\d{1,2}(:\\d{1,2})?$";/*** 中国车牌号码(兼容新能源车牌)*/static readonly REG_PLATE_NUMBER ="^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[ABCDEFGHJK])|([ABCDEFGHJK]([A-HJ-NP-Z0-9])[0-9]{4})))|" +"([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]\\d{3}\\d{1,3}[领])|" +"([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$";/*** 社会统一信用代码*/static readonly REG_CREDIT_CODE ="^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$";/*** 车架号(车辆识别代号)*/static readonly REG_CAR_VIN ="^[A-HJ-NPR-Z0-9]{8}[0-9X][A-HJ-NPR-Z0-9]{2}\\d{6}$";/*** 驾驶证档案编号(中国驾驶证档案编号)*/static readonly REG_CAR_DRIVING_LICENCE = "^[0-9]{12}$";/*** 中文姓名*/static readonly REG_CHINESE_NAME = "^[\u2E80-\u9FFF·]{2,60}$";/*** 匹配表情符号(包括单个和组合表情)*/static readonly REG_EMOJI ="(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])";/*** 判断内容是否匹配指定正则* @param content 待验证的内容* @param pattern 正则表达式* @returns 是否匹配*/private static isMatch(content: string | null | undefined, pattern: string): boolean {if (!content) return false;const regex = new RegExp(pattern);return regex.test(content);}/*** 判断邮箱格式是否正确* @param content 邮箱地址* @returns 是否匹配*/static isEmail(content: string): boolean {return RegexUtil.isMatch(content, RegexUtil.REG_EMAIL);}/*** 判断是否包含表情符号* @param content 待验证的内容* @returns 是否包含表情*/static containsEmoji(content: string): boolean {return RegexUtil.isMatch(content, RegexUtil.REG_EMOJI);}/*** 判断电话号码格式是否正确* @param phone 电话号码* @returns 是否匹配*/static isPhone(phone: string): boolean {return FormatUtil.isPhone(phone);}
}
代码如下:

import { FormatUtil } from './FormatUtil';/*** 正则工具类* @author CSDN-鸿蒙布道师* @since 2025/04/27*/
export class RegexUtil {/*** 英文字母、数字和下划线*/static readonly REG_GENERAL = "^\\w+$";/*** 数字*/static readonly REG_NUMBERS = "^\\d+$";/*** 字母*/static readonly REG_WORD = "^[a-zA-Z]+$";/*** 单个中文汉字* 参考维基百科汉字 Unicode 范围 (https://zh.wikipedia.org/wiki/%E6%B1%89%E5%AD%97)*/static readonly REG_CHINESE ="^[\u2E80-\u2EFF\u2F00-\u2FDF\u31C0-\u31EF\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\uD840\uDC00-\uD869\uDEDF\uD869\uDF00-\uD86D\uDF3F\uD86D\uDF40-\uD86E\uDC1F\uD86E\uDC20-\uD873\uDEAF\uD87E\uDC00-\uD87E\uDE1F]$";/*** 中文汉字(一个或多个)*/static readonly REG_CHINESES = `${RegexUtil.REG_CHINESE}+`;/*** 分组匹配变量*/static readonly REG_GROUP_VAR = "^\\$(\\d+)$";/*** IPv4 地址*/static readonly REG_IPV4 ="^(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)$";/*** IPv6 地址*/static readonly REG_IPV6 ="^(([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}%[0-9a-zA-Z]+|::(ffff(:0{1,4})?:)?((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1?[0-9])?[0-9])\\.){3}(25[0-5]|(2[0-4]|1?[0-9])?[0-9]))$";/*** 货币金额*/static readonly REG_MONEY = "^(\\d+(?:\\.\\d+)?)$";/*** 邮件地址,符合 RFC 5322 规范* 来源:http://emailregex.com/*/static readonly REG_EMAIL ="^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?: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]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)])$";/*** 移动电话号码(中国大陆)*/static readonly REG_MOBILE = "^(?:0|86|\\+86)?1[3-9]\\d{9}$";/*** 中国香港移动电话号码*/static readonly REG_MOBILE_HK = "^(?:0|852|\\+852)?\\d{8}$";/*** 中国台湾移动电话号码*/static readonly REG_MOBILE_TW = "^(?:0|886|\\+886)?(?:|-)09\\d{8}$";/*** 中国澳门移动电话号码*/static readonly REG_MOBILE_MO = "^(?:0|853|\\+853)?(?:|-)6\\d{7}$";/*** 座机号码*/static readonly REG_TEL = "^(010|02\\d|0[3-9]\\d{2})-?(\\d{6,8})$";/*** 座机号码 + 400/800 电话*/static readonly REG_TEL_400_800 ="^0\\d{2,3}[\\- ]?[1-9]\\d{6,7}|[48]00[\\- ]?[1-9]\\d{6}$";/*** 18 位身份证号码*/static readonly REG_CITIZEN_ID ="^[1-9]\\d{5}[1-2]\\d{3}((0\\d)|(1[0-2]))(([012]\\d)|3[0-1])\\d{3}(\\d|X|x)$";/*** 邮编(兼容港澳台)*/static readonly REG_ZIP_CODE ="^(0[1-7]|1[0-356]|2[0-7]|3[0-6]|4[0-7]|5[0-7]|6[0-7]|7[0-5]|8[0-9]|9[0-8])\\d{4}|99907[78]$";/*** 生日*/static readonly REG_BIRTHDAY ="^(\\d{2,4})([/\\-.年]?)(\\d{1,2})([/\\-.月]?)(\\d{1,2})日?$";/*** URI* 定义见:https://www.ietf.org/rfc/rfc3986.html#appendix-B*/static readonly REG_URI ="^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$";/*** URL*/static readonly REG_URL ="^[a-zA-Z]+://[\\w-+&@#/%?=~_|!:,.;]*[\\w-+&@#/%=~_|]$";/*** HTTP URL(支持 FTP、File 等协议)*/static readonly REG_URL_HTTP ="^(https?|ftp|file)://[\\w-+&@#/%?=~_|!:,.;]*[\\w-+&@#/%=~_|]$";/*** 中文字、英文字母、数字和下划线*/static readonly REG_GENERAL_WITH_CHINESE = "^[\u4E00-\u9FFF\\w]+$";/*** UUID*/static readonly REG_UUID ="^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$";/*** 不带横线的 UUID*/static readonly REG_UUID_SIMPLE = "^[0-9a-fA-F]{32}$";/*** MAC 地址*/static readonly REG_MAC_ADDRESS ="^((?:[a-fA-F0-9]{1,2}[:-]){5}[a-fA-F0-9]{1,2})|0x(\\d{12}).+ETHER$";/*** 16 进制字符串*/static readonly REG_HEX = "^[a-fA-F0-9]+$";/*** 时间格式*/static readonly REG_TIME = "^\\d{1,2}:\\d{1,2}(:\\d{1,2})?$";/*** 中国车牌号码(兼容新能源车牌)*/static readonly REG_PLATE_NUMBER ="^(([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z](([0-9]{5}[ABCDEFGHJK])|([ABCDEFGHJK]([A-HJ-NP-Z0-9])[0-9]{4})))|" +"([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领]\\d{3}\\d{1,3}[领])|" +"([京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-Z][A-HJ-NP-Z0-9]{4}[A-HJ-NP-Z0-9挂学警港澳使领]))$";/*** 社会统一信用代码*/static readonly REG_CREDIT_CODE ="^[0-9A-HJ-NPQRTUWXY]{2}\\d{6}[0-9A-HJ-NPQRTUWXY]{10}$";/*** 车架号(车辆识别代号)*/static readonly REG_CAR_VIN ="^[A-HJ-NPR-Z0-9]{8}[0-9X][A-HJ-NPR-Z0-9]{2}\\d{6}$";/*** 驾驶证档案编号(中国驾驶证档案编号)*/static readonly REG_CAR_DRIVING_LICENCE = "^[0-9]{12}$";/*** 中文姓名*/static readonly REG_CHINESE_NAME = "^[\u2E80-\u9FFF·]{2,60}$";/*** 匹配表情符号(包括单个和组合表情)*/static readonly REG_EMOJI ="(?:[\u2700-\u27bf]|(?:\ud83c[\udde6-\uddff]){2}|[\ud800-\udbff][\udc00-\udfff]|[\u0023-\u0039]\ufe0f?\u20e3|\u3299|\u3297|\u303d|\u3030|\u24c2|\ud83c[\udd70-\udd71]|\ud83c[\udd7e-\udd7f]|\ud83c\udd8e|\ud83c[\udd91-\udd9a]|\ud83c[\udde6-\uddff]|\ud83c[\ude01-\ude02]|\ud83c\ude1a|\ud83c\ude2f|\ud83c[\ude32-\ude3a]|\ud83c[\ude50-\ude51]|\u203c|\u2049|[\u25aa-\u25ab]|\u25b6|\u25c0|[\u25fb-\u25fe]|\u00a9|\u00ae|\u2122|\u2139|\ud83c\udc04|[\u2600-\u26FF]|\u2b05|\u2b06|\u2b07|\u2b1b|\u2b1c|\u2b50|\u2b55|\u231a|\u231b|\u2328|\u23cf|[\u23e9-\u23f3]|[\u23f8-\u23fa]|\ud83c\udccf|\u2934|\u2935|[\u2190-\u21ff])";/*** 判断内容是否匹配指定正则* @param content 待验证的内容* @param pattern 正则表达式* @returns 是否匹配*/private static isMatch(content: string | null | undefined, pattern: string): boolean {if (!content) return false;const regex = new RegExp(pattern);return regex.test(content);}/*** 判断邮箱格式是否正确* @param content 邮箱地址* @returns 是否匹配*/static isEmail(content: string): boolean {return RegexUtil.isMatch(content, RegexUtil.REG_EMAIL);}/*** 判断是否包含表情符号* @param content 待验证的内容* @returns 是否包含表情*/static containsEmoji(content: string): boolean {return RegexUtil.isMatch(content, RegexUtil.REG_EMOJI);}/*** 判断电话号码格式是否正确* @param phone 电话号码* @returns 是否匹配*/static isPhone(phone: string): boolean {return FormatUtil.isPhone(phone);}
}

http://www.xdnf.cn/news/2429.html

相关文章:

  • Qt/C++开发监控GB28181系统/设备注册/设备注销/密码认证/心跳保活/校时
  • [MCU]SRAM
  • JVM指令手册:深入理解字节码执行机制
  • 图像生成新势力:GPT-Image-1 与 GPT-4o 在智创聚合 API 的较量
  • 大数据学习栈记——Hive4.0.1安装
  • 整合 | 大模型时代:微调技术在医疗智能问答矩阵的实战应用20250427
  • 正则表达式详解
  • π0.5:带开放世界泛化的视觉-语言-动作模型
  • C++学习:六个月从基础到就业——模板编程:模板特化
  • web字符转义
  • Maven概述
  • Leetcode837.新21点
  • GRS认证审核内容?GRS认证基本概述?GRS认证的好处?
  • 【应用密码学】实验二 分组密码(2)
  • 「浏览器即OS」:WebVM技术栈如何用Wasm字节码重构冯·诺依曼体系?
  • 革新桌面自动化:微软UFO²操作系统深度解析与未来展望
  • C++笔记-模板进阶和继承(上)
  • 最佳实践-HENGSHI SENSE 可视化创作中如何引入数据集市的成果
  • 企业数据赋能 | 应用模板分享:汽车销售仪表板
  • Ubuntu下MySQL的安装
  • 前端高频面试题day2
  • 【MySQL】表的CRUD
  • 第1讲、#PyTorch教学环境搭建与Tensor基础操作详解
  • 计算机网络学习笔记 4-6章
  • 量子网络:构建未来通信的超高速“高速公路”
  • css面板视觉高度
  • 爬虫技术入门:基本原理、数据抓取与动态页面处理
  • Git 全面解析:从核心概念到生态应用
  • setup和hold互卡问题剖析
  • 【NVM】管理不同版本的node.js