当前位置: 首页 > 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.rkmt.cn/news/1420400.html

相关文章:

  • 别再手动改代码了!用Vivado的VIO IP核实时调试你的FPGA串口模块(附UART实例)
  • 网络检测与诊断
  • COM3D2 MaidFiddler深度解析:实时游戏数据操控框架的技术架构与实现
  • 2026最新 商丘市黄金白银铂金回收店铺实力排行榜TOP5;五家靠谱回收门店联系方式推荐 - 速递信息
  • 从零构建高效质量保障体系:融入SDLC、跨职能协作与AI实践
  • 微信聊天记录永久保存终极指南:如何完整备份你的珍贵回忆
  • 2026年不锈钢雕塑厂家与玻璃钢雕塑厂家推荐,从不锈钢雕塑定制厂家、不锈钢雕塑源头厂家详细介绍优点 - 栗子测评
  • 在c语言项目中集成多模型ai能力,taotoken如何简化api管理与成本控制
  • 一个工具重塑你的数字记忆主权:WeChatMsg如何解锁聊天记录的数据价值
  • 7nm芯片后端实战:Innovus vs ICC2,我的踩坑记录与避坑指南
  • 使用Taotoken的Token Plan套餐为你的AI应用节省成本
  • 去抖音水印的方法:手机电脑免费工具实用指南
  • Windows运维与安全场景合集(不定期更新)
  • 魔兽争霸3终极优化指南:专业工具让传统游戏焕发新生
  • Angry IP Scanner网络扫描技术架构解析与高级应用实践
  • Sketchfab模型下载技术方案:解决3D资源本地化使用的实践方法
  • MATLAB科研绘图进阶:用STernary工具箱5分钟搞定一篇论文级三元相图
  • 广州手表回收避坑:上门估价和到账一致才敢推荐 - 奢侈品回收测评
  • 抖音视频批量下载终极指南:如何快速免费获取无水印高清素材
  • Carnice-9b与Hermes Agent集成指南:从基础到高级应用全流程
  • 合肥黄金上门回收怎么选?福运来专业透明口碑好 - 上门黄金回收
  • Qwen2.5-0.5B-Instruct性能测试:CPU环境下如何优化推理速度?实测数据分享
  • 3分钟快速上手:Windows原生读写Btrfs文件系统完整指南
  • E7Helper:第七史诗自动化脚本的终极解决方案
  • 本地数据库客户端怎么远程连回家里服务器?CloudBeaver + cpolar 搭一个浏览器版数据库工作台
  • 数据平权:医疗与社交数据同权保护下的行业变革与挑战
  • 具身智能-三层结构
  • 2026年当下,如何精准联系到专业的激光雷达体积测量系统生产商 - 速递信息
  • 为什么选择Gemma 4 21B-A4B-it REAP?21.34B参数模型的显存优化方案
  • CapRL-Video-4B vs 传统视频模型:10 组关键指标全面评测 [特殊字符]