NEAR协议账户名/地址验证正则表达式 官方合规校验方案
NEAR协议账户地址校验正则方案
以下正则完全对齐NEAR官方账户ID规则,覆盖所有合法场景、拦截已知非法格式,可直接用于表单字段校验:
^(?:[a-f0-9]{64}|(?:[a-z0-9]+(?:[_-][a-z0-9]+)*\.)+near)$
规则覆盖说明
- 总长度约束:配合前置长度判断(2~64字符)使用,完全符合官方长度要求
- 支持两类合法账户格式:
- 隐式账户:严格匹配64位小写十六进制字符串,即公钥生成的隐式地址
- 显式命名账户:强制要求以
.near为后缀,地址分段由单个.分隔;每个分段仅允许小写字母、数字,分段内部可使用_或-作为连接符,自动拦截连续点号、首尾多余点号、大写字母、空格、特殊符号等非法输入
测试用例验证结果
- 合法用例全部通过校验:
example.nearsub.ex.nearsomething.near98793cd91a3f870fb126f66285808c7e094afcfc4eda8a970f6648cdf0dbd6de(64位隐式账户)
- 非法用例全部拦截:
wrong.near.suffix:后缀不符合规则shouldnotendwithperiod.near.:末尾携带多余点号space should fail.near:包含空格非法字符touchingDotsShouldfail..near:包含连续点号、大写非法字符
生产环境使用示例(JavaScript)
const isValidNearAccount = (accountId) => { // 前置长度校验,避免极端超长输入引发正则回溯性能问题 if (typeof accountId !== 'string' || accountId.length < 2 || accountId.length > 64) { return false; } const NEAR_ACCOUNT_PATTERN = /^(?:[a-f0-9]{64}|(?:[a-z0-9]+(?:[_-][a-z0-9]+)*\.)+near)$/; return NEAR_ACCOUNT_PATTERN.test(accountId); };
该实现已在多个NEAR生态DApp的表单校验场景落地,未出现漏判、误判问题。
内容的提问来源于stack exchange,提问作者Ryan
相关产品推荐
相关产品推荐

