直接在setter中嵌入正则校验是最轻量、最可控的运行期强校验方式,通过预编译正则、私有字段封装、只读getter闭环及明确错误提示,实现赋值前实时拦截非法输入并确保状态合法。

直接在 setter 中嵌入正则校验,是最轻量、最可控的运行期强校验方式——它不依赖框架注解或外部验证器,每次赋值都实时拦截非法输入。
校验逻辑写在 setter 内部
把正则匹配作为 setter 的第一道防线,校验失败立即抛出异常,阻止非法值进入对象内部状态。
- 对邮箱字段:用
/^[^\s@]+@[^\s@]+\.[^\s@]+$/校验格式,空白或无效格式直接 throw new Error('邮箱格式不合法') - 对手机号:区分国内(
^1[3-9]\d{9}$)与国际号段,不匹配则拒绝赋值 - 对用户名:限制长度、字符范围(如
^[a-zA-Z0-9_\u4e00-\u9fa5]{2,16}$),并 trim 去首尾空格后再校验
配合私有字段与只读 getter 构建闭环
校验不是孤立动作,需与字段封装协同形成安全闭环。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
- 声明私有字段(如
private _email: string),setter 只操作该字段,外部无法绕过 - getter 不做额外处理,仅返回已通过校验的值,确保读出的数据始终合法
- 若需脱敏(如返回邮箱前缀+***@domain),在 getter 中处理,不影响校验逻辑的纯粹性
注意边界情况与用户体验
强校验不等于粗暴拦截,要兼顾健壮性与可维护性。
- 正则本身应预编译(如
const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/),避免每次调用重复解析 - 错误信息需明确具体原因(“缺少 @ 符号” 比 “格式错误” 更友好)
- 避免在 setter 中触发异步操作(如查重)、修改其他字段或发请求;这些应拆为显式方法(如
async validateEmailUniqueness())
不复杂但容易忽略:校验必须发生在赋值“之前”,且异常必须被调用方感知——这是运行期强校验成立的前提。










