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

HarmonyOS 表单验证入门:用 RegexUtil 一行代码搞定手机号和邮箱验证

文章目录

    • 背景
      • 方法总览
      • isPhone:手机号验证
      • 在表单里用 isPhone
      • isEmail:邮箱验证
      • Demo 中的输入框绑定方式
      • 常见验证需求对应方法速查
      • isDigits:纯数字验证
      • isEmoji:表情符号检测
      • 写在最后

背景

近期发现一款很有意思的HarmonyOS 三方库, 地址 @pura/harmony-utils(V1.4.0) , 作者是"桃花镇童长老", 我这里也是直接通过该作者公布的源码进行案例编写进行,写了到目前写了一部分demo ,感觉确实很有帮助,这里呢也是开始写一个系列的演示demo 供大家参考。如有帮助可以在OpenHarmony中进行下载安装进行使用哦

案例demo导航展示

↓↓↓↓↓↓接下来言归正传 ↓↓↓↓
做 HarmonyOS 应用,登录注册页面的表单验证是逃不掉的。手机号格式对不对?邮箱地址合不合法?自己写正则既麻烦又容易出错。

RegexUtil提供了开箱即用的验证方法,isPhone("13800138000")一行代码搞定,比自己写正则省事多了。

方法总览


isPhone:手机号验证

中国大陆手机号的格式:11位数字,以 1 开头,第二位是 3-9 之间的数字。

// Demo 代码this.Btn('isPhone() 验证','#4A90E2',()=>{this.addLog(`isPhone("${this.inputPhone}") →${RegexUtil.isPhone(this.inputPhone)}`);})this.Btn('isPhone("13800138000") ✓','#4A90E2',()=>{this.addLog(`isPhone("13800138000") →${RegexUtil.isPhone('13800138000')}`);})this.Btn('isPhone("12345") ✗','#7FB3F5',()=>{this.addLog(`isPhone("12345") →${RegexUtil.isPhone('12345')}`);})

实际运行结果

  • isPhone("13800138000")true(正确的手机号)
  • isPhone("12345")false(太短,格式不对)
  • isPhone("19900001234")true(199 号段也支持)
  • isPhone("20000138000")false(不是以 1 开头)

在表单里用 isPhone

实际项目里,手机号验证通常绑定在输入框的变化事件和提交按钮上:

@Statephone:string='';@StatephoneError:string='';// 输入框TextInput({text:this.phone,placeholder:'请输入手机号'}).width('100%').height(40).fontSize(13).inputFilter('[0-9]')// 只允许输入数字.maxLength(11).onChange(v=>{this.phone=v;// 输入满 11 位时实时验证if(v.length===11){this.phoneError=RegexUtil.isPhone(v)?'':'手机号格式不正确';}else{this.phoneError='';}})// 错误提示if(this.phoneError!==''){Text(this.phoneError).fontSize(12).fontColor('#E74C3C')}// 提交按钮验证Button('提交').onClick(()=>{if(!RegexUtil.isPhone(this.phone)){this.phoneError='请输入正确的手机号';return;}// 继续提交逻辑})

isEmail:邮箱验证

邮箱格式规则比手机号复杂一些,但isEmail封装好了:

this.Btn('isEmail() 验证输入','#27AE60',()=>{this.addLog(`isEmail("${this.inputEmail}") →${RegexUtil.isEmail(this.inputEmail)}`);})this.Btn('isEmail("user@qq.com") ✓','#27AE60',()=>{this.addLog(`isEmail("user@qq.com") →${RegexUtil.isEmail('user@qq.com')}`);})this.Btn('isEmail("not-an-email") ✗','#58D68D',()=>{this.addLog(`isEmail("not-an-email") →${RegexUtil.isEmail('not-an-email')}`);})

实际运行结果

  • isEmail("test@example.com")true
  • isEmail("user@qq.com")true
  • isEmail("user+tag@gmail.com")true(带+号的邮箱也支持)
  • isEmail("not-an-email")false(没有@
  • isEmail("user@")false@后面没有域名)
  • isEmail("@example.com")false@前面没有用户名)

Demo 中的输入框绑定方式

Demo 里的 TextInput 和按钮结合方式很典型,值得学:

@StateinputPhone:string='13800138000';@StateinputEmail:string='test@example.com';// 手机号输入区this.SectionTitle('isPhone(phone) 手机号验证')TextInput({text:this.inputPhone,placeholder:'输入手机号'}).width('100%').height(40).fontSize(13).onChange(v=>{this.inputPhone=v;})this.Btn('isPhone() 验证','#4A90E2',()=>{this.addLog(`isPhone("${this.inputPhone}") →${RegexUtil.isPhone(this.inputPhone)}`);})// 邮箱输入区this.SectionTitle('isEmail(content) 邮箱验证')TextInput({text:this.inputEmail,placeholder:'输入邮箱'}).width('100%').height(40).fontSize(13).onChange(v=>{this.inputEmail=v;})this.Btn('isEmail() 验证输入','#27AE60',()=>{this.addLog(`isEmail("${this.inputEmail}") →${RegexUtil.isEmail(this.inputEmail)}`);})

@State绑定输入框的值,点击验证按钮时直接使用 state 里的值——这是 ArkTS 响应式绑定的标准用法。

常见验证需求对应方法速查

验证需求方法
中国大陆手机号RegexUtil.isPhone(str)
邮箱地址RegexUtil.isEmail(str)
18位身份证RegexUtil.isValidCard(str)(下一篇详解)
纯数字RegexUtil.isDigits(str)
含表情符号RegexUtil.isEmoji(str)
IP地址RegexUtil.isMatch(str, RegexUtil.REG_IPV4)

isDigits:纯数字验证

顺带一提,isDigits检查字符串是否全为数字,常用于验证短信验证码、订单号等:

this.Btn('isDigits("12345") ✓','#9B59B6',()=>{this.addLog(`isDigits("12345") →${RegexUtil.isDigits('12345')}`);})this.Btn('isDigits("12a45") ✗','#9B59B6',()=>{this.addLog(`isDigits("12a45") →${RegexUtil.isDigits('12a45')}`);})this.Btn('isDigits("") 空串 ✗','#8E44AD',()=>{this.addLog(`isDigits("") →${RegexUtil.isDigits('')}`);})

实际运行结果

  • isDigits("12345")true
  • isDigits("12a45")false(包含字母)
  • isDigits("")false(空字符串不算纯数字)

isEmoji:表情符号检测

聊天应用里有时需要检测输入是否包含 emoji,禁止某些场景下输入 emoji:

this.Btn('isEmoji("Hello😊") ✓','#F39C12',()=>{this.addLog(`isEmoji("Hello😊") →${RegexUtil.isEmoji('Hello😊')}`);})this.Btn('isEmoji("Hello World") ✗','#F39C12',()=>{this.addLog(`isEmoji("Hello World") →${RegexUtil.isEmoji('Hello World')}`);})

实际运行结果

  • isEmoji("Hello😊")true(包含 emoji)
  • isEmoji("Hello World")false(没有 emoji)

写在最后

isPhoneisEmail是日常开发里用得最多的两个方法。直接用,不用自己写正则,减少错误,提高效率。

下一篇聊isValidCard身份证验证,以及isMatch配合内置正则常量的各种验证场景。

http://www.jsqmd.com/news/909094/

相关文章:

  • 网络工程师核心专业英语词汇与短语速查表
  • 最新沧州黄金回收六家横评:长悦全能称王,五家各出奇招 - 专业黄金回收
  • 别再手动改代码了!用Vivado的VIO IP核实时调试你的FPGA串口模块(附UART实例)
  • 土地利用模拟翻车实录:我用IDRISI CA_Markov踩过的那些坑(附正确配置与常见错误排查)
  • ControlNet 1.1 模型文件命名全解析:从control_v11p_sd15_canny看懂版本、标识与基础模型
  • 网络检测与诊断
  • 足不出户也能安心变现,2026广州黄金回收便民指南 - 专业黄金回收
  • 图像处理入门实战:用Matplotlib给P图加个‘科学仪表盘’——直方图
  • COM3D2 MaidFiddler深度解析:实时游戏数据操控框架的技术架构与实现
  • 终极分屏游戏指南:如何用NucleusCoop让单机游戏变身多人派对
  • 2026最新 商丘市黄金白银铂金回收店铺实力排行榜TOP5;五家靠谱回收门店联系方式推荐 - 速递信息
  • 从零构建高效质量保障体系:融入SDLC、跨职能协作与AI实践
  • COM3D2 MaidFiddler终极指南:掌握实时角色编辑核心技术
  • XHS-Downloader完整指南:高效下载小红书内容的终极解决方案
  • AI辅助调试实战:10大场景提升开发效率
  • 微信聊天记录永久保存终极指南:如何完整备份你的珍贵回忆
  • 戴尔G15散热控制终极指南:如何用开源工具替代臃肿的AWCC
  • 避坑指南:Unity InputSystem多指触控与摇杆冲突?手把手修复你的虚拟摇杆Bug
  • 包头黄金回收实测哪家强?长悦与六大机构价格服务全对比 - 专业黄金回收
  • 告别CPU瓶颈:手把手教你用Mellanox网卡和OpenSM搭建Infiniband/RDMA高性能集群
  • 2026年不锈钢雕塑厂家与玻璃钢雕塑厂家推荐,从不锈钢雕塑定制厂家、不锈钢雕塑源头厂家详细介绍优点 - 栗子测评
  • 保姆级教程:用ROS2和OpenCV搞定机械手九点标定(附避坑代码)
  • SSH免密登录完整实战教程(原理+一键配置+免密故障排查)
  • 在c语言项目中集成多模型ai能力,taotoken如何简化api管理与成本控制
  • 避开这些坑:OpenStack浮动IP配置与外部网络通信的5个常见误区(基于All-in-One部署经验)
  • HarmonyOS RegexUtil 身份证验证与内置正则常量:isValidCard 和 isMatch 实战
  • 广东润生软件为何偏爱与机器人开发技术,
  • Mugen训练配置详解:如何用LoRA进行自定义模型微调
  • 如何快速解决键盘连击问题:终极免费修复方案KeyboardChatterBlocker
  • 一个工具重塑你的数字记忆主权:WeChatMsg如何解锁聊天记录的数据价值