鸿蒙三方库 | harmony-utils之RegexUtil正则匹配验证详解

前言

正则表达式是文本匹配和验证的强大工具,但编写和记忆正则模式并不容易。@pura/harmony-utilsRegexUtil 封装了常用正则验证方法,开发者无需手写正则即可完成常见验证。本文将从API说明、代码实战、进阶用法、常见问题等多个维度进行全面讲解,帮助开发者快速掌握并应用到实际项目中。

一、RegexUtil核心API

RegexUtil 提供了以下正则验证方法:

方法 说明 返回类型 使用场景
isEmail(str) 是否邮箱 boolean 邮箱校验
isPhone(str) 是否手机号 boolean 手机号校验
isUrl(str) 是否URL boolean 链接校验
isIdCard(str) 是否身份证号 boolean 身份验证
isChinese(str) 是否纯中文 boolean 中文检查
isNumber(str) 是否纯数字 boolean 数字检查
matches(str, regex) 自定义正则匹配 boolean 自定义验证

1.1 核心特性

  • 简洁易用:封装复杂正则为一行调用,降低使用门槛
  • 类型安全:完整的TypeScript类型定义,编译期即可发现错误
  • 异常处理:内置异常捕获机制,避免运行时崩溃
  • 常用覆盖:覆盖邮箱、手机号、URL、身份证等常见验证

1.2 验证方法对照

方法 有效示例 无效示例 说明
isEmail test@qq.com test@ 邮箱格式
isPhone 13800138000 12345 11位手机号
isUrl https://a.com abc URL格式
isIdCard 110101199001011234 12345 18位身份证

二、完整使用步骤

2.1 安装依赖

bash 复制代码
ohpm install @pura/harmony-utils

2.2 邮箱验证

typescript 复制代码
import { RegexUtil } from '@pura/harmony-utils';

Button('邮箱验证')
  .width('100%')
  .onClick(() => {
    try {
      let r1 = RegexUtil.isEmail('test@example.com');
      let r2 = RegexUtil.isEmail('invalid-email');
      this.result = `test@example.com: ${r1 ? '有效 ✅' : '无效 ❌'}\ninvalid-email: ${r2 ? '有效 ✅' : '无效 ❌'}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

2.3 手机号验证

typescript 复制代码
Button('手机号验证')
  .width('100%')
  .onClick(() => {
    try {
      let r1 = RegexUtil.isPhone('13800138000');
      let r2 = RegexUtil.isPhone('12345');
      this.result = `13800138000: ${r1 ? '有效 ✅' : '无效 ❌'}\n12345: ${r2 ? '有效 ✅' : '无效 ❌'}`;
    } catch (e) {
      this.result = '异常: ' + e;
    }
  })

三、完整页面示例

typescript 复制代码
import { RegexUtil, ToastUtil } from '@pura/harmony-utils';

@Entry
@Component
struct RegexDemo {
  @State result: string = '';
  @State input: string = '';

  build() {
    Column({ space: 12 }) {
      TextInput({ text: this.input }).onChange(v => this.input = v)
      Button('验证邮箱').width('100%').onClick(() => {
        this.result = `邮箱: ${RegexUtil.isEmail(this.input) ? '有效 ✅' : '无效 ❌'}`;
      });
      Button('验证手机号').width('100%').onClick(() => {
        this.result = `手机号: ${RegexUtil.isPhone(this.input) ? '有效 ✅' : '无效 ❌'}`;
      });
      Text(this.result).fontSize(14).fontColor('#333333')
    }
    .padding(16)
  }
}

四、进阶用法

4.1 表单综合校验

typescript 复制代码
import { RegexUtil, ToastUtil } from '@pura/harmony-utils';

function validateRegisterForm(email: string, phone: string): boolean {
  if (!RegexUtil.isEmail(email)) {
    ToastUtil.show('邮箱格式不正确');
    return false;
  }
  if (!RegexUtil.isPhone(phone)) {
    ToastUtil.show('手机号格式不正确');
    return false;
  }
  return true;
}

4.2 自定义正则

typescript 复制代码
function isPostalCode(str: string): boolean {
  return RegexUtil.matches(str, /^\d{6}$/);
}

五、注意事项

  1. 手机号规则:isPhone基于中国大陆手机号规则
  2. 身份证校验:isIdCard仅校验格式,不验证真实性
  3. URL协议:isUrl通常要求包含协议前缀
  4. 初始化依赖 :使用前需确保 AppUtil.init() 已调用
  5. 正则性能:复杂正则可能影响性能

六、常见问题

Q1: isPhone支持国际手机号吗?

默认仅支持中国大陆手机号,国际号码需自定义正则。

Q2: isIdCard支持15位身份证吗?

取决于实现,通常支持18位新版身份证。

Q3: isUrl对IP地址有效吗?

通常有效,如 http://192.168.1.1 会被识别为URL。

Q4: 如何添加自定义验证规则?

使用matches方法传入自定义正则表达式即可。

总结

RegexUtil 的正则验证方法为表单校验提供了便捷支持。本文详细介绍了核心API、使用步骤、完整示例、进阶用法以及常见问题的解决方案。开发者可以利用这些方法快速实现邮箱、手机号等常见验证。

本文基于 @pura/harmony-utils 工具库,更多功能请参考官方文档与后续系列文章。

相关推荐
乌恩大侠1 天前
GH200 新增 NVMe SSD 分区、格式化与挂载完整流程
运维·服务器·前端
Mr.朱鹏1 天前
Linux 服务器 LVM 根分区在线动态扩容
linux·服务器·数据库
mengge.cloud1 天前
存储技术基础小白教程
linux·运维·服务器·wpf·存储
tang777891 天前
反爬虫场景下代理IP池的动态扩容与失效IP自动清理方案实现
linux·服务器·网络·爬虫代理·住宅代理ip
新时代牛马1 天前
Linux 系统调用与IPC 完整篇:从syscall 入口、VDSO 到pipe/shm/futex 选型
linux·运维·服务器
小HANN1 天前
Linux建站实战:CentOS7+LNMP 从零部署 ECShop 开源电商系统
linux·运维·服务器·经验分享
三8441 天前
SSRF 从入门到实战:原理、危害与基础利用
服务器·网络安全·ssrf·#web安全
平原20181 天前
GPT Image 2 / Nano Banana API成本拆解:$0.0081、84.7%与单张有效成本
linux·服务器·gpt
T1mzhou1 天前
ARM64 Linux 6.10内核启动流程2-rootfs 怎么挂上
linux·服务器·前端
2301_815091011 天前
TCP 并发服务器模型:4 种 IO 模型完整梳理
服务器·网络·tcp/ip