You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

密码与手机号验证:EditText字段正则表达式如何编写?

密码与手机号的EditText正则验证方案

嘿!很高兴你已经搞定了邮箱的基础验证~ 下面我来帮你梳理密码和手机号的常见正则验证方案,你可以根据自己的业务需求调整细节:

一、密码验证

密码的规则通常是根据产品安全要求定的,这里给你几个最常用的场景:

场景1:基础复杂度(至少8位,包含大小写字母+数字)

这个是比较通用的规则,正则表达式如下:

private static final String PASSWORD_PATTERN = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,}$";

验证代码示例:

if (!password.matches(PASSWORD_PATTERN)) {
    etPassword.setError("密码需至少8位,包含大小写字母和数字");
}

简单解释下正则各部分:

  • ^ 和 $:匹配字符串的开头和结尾,确保整个密码都符合规则
  • (?=.*[a-z]):断言密码中至少包含一个小写字母
  • (?=.*[A-Z]):断言密码中至少包含一个大写字母
  • (?=.*\\d):断言密码中至少包含一个数字
  • .{8,}:匹配任意字符(除换行),长度至少8位

场景2:增强复杂度(加上特殊字符)

如果需要密码包含特殊字符(比如@$!%*?&这类),可以调整正则:

private static final String PASSWORD_STRONG_PATTERN = "^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d)(?=.*[@$!%*?&]).{8,16}$";

这里额外加了(?=.*[@$!%*?&])断言特殊字符,同时限制了最大长度16位,你可以根据需求修改特殊字符范围和长度限制。

二、手机号验证

针对国内手机号的话,规则是:1开头,第二位是3-9(因为10、11开头的不是普通手机号),后面跟9位数字。

国内手机号验证正则

private static final String PHONE_PATTERN = "^1[3-9]\\d{9}$";

验证代码示例:

if (!phone.matches(PHONE_PATTERN)) {
    etPhone.setError("请输入有效的手机号");
}

解释:

  • ^1:以1开头
  • [3-9]:第二位只能是3到9之间的数字
  • \\d{9}:后面跟9位任意数字
  • $:匹配结尾,确保没有多余字符

支持国际号码的扩展方案

如果你的APP需要支持国际手机号,可以用兼容E.164标准的正则,允许开头的+号,号码长度1-15位:

private static final String INTERNATIONAL_PHONE_PATTERN = "^\\+?[1-9]\\d{1,14}$";

这个正则会匹配比如+86138xxxxxxx或者+1234567890这类国际号码。

小提示

  • 把正则定义成静态常量,方便后续维护和修改
  • 可以根据业务需求调整规则,比如密码允许的特殊字符、手机号是否需要带区号等
  • 正则验证只是前端的基础校验,后端一定要再做一次验证,避免恶意绕过

内容的提问来源于stack exchange,提问作者Theo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:09:49